2010-02-01 40 views
67

Tôi đang sử dụng hiện nay jQuery:jQuery - Thêm ID thay vì lớp

$(function() { 
    $('span .breadcrumb').each(function(){ 
     $('#nav').addClass($(this).text()); 
     $('#container').addClass($(this).text()); 
     $('.stretch_footer').addClass($(this).text()) 
     $('#footer').addClass($(this).text()); 
    }); 
}); 

Nó áp dụng các văn bản được tổ chức tại đường dẫn để 4 yếu tố trên trang, cho phép tôi để tạo kiểu đặc biệt để trang có trên .

Tôi muốn thử thêm ID thay vì một lớp, làm thế nào tôi có thể đạt được điều này?

+0

Một ID phải là duy nhất là XHTML hợp lệ. ID phải khớp với các quy tắc chặt chẽ hơn, ví dụ: không có dấu cách, bắt đầu bằng chữ cái hoặc _, chỉ chứa chữ cái, số hoặc một số ký tự hạn chế khác. –

+7

@Peter: thêm liên kết vào wikipedia có vẻ hơi dư thừa. – nickf

Trả lời

167

Hãy thử điều này:

$('element').attr('id', 'value'); 

Vì vậy, nó trở thành;

$(function() { 
    $('span .breadcrumb').each(function(){ 
     $('#nav').attr('id', $(this).text()); 
     $('#container').attr('id', $(this).text()); 
     $('.stretch_footer').attr('id', $(this).text()) 
     $('#footer').attr('id', $(this).text()); 
    }); 
}); 

Vì vậy, bạn đang thay đổi/ghi đè id của ba phần tử và thêm id vào một phần tử. Bạn có thể thay đổi theo nhu cầu của bạn ...

+1

Làm thế nào về bộ nhớ đệm? Thay vì tạo 4 đối tượng jQuery khác nhau của "this". var text = $ (this) .text(); – PetersenDidIt

+0

@petersendidt: đồng ý, tôi đã nói trong câu trả lời của tôi, rằng anh ấy cần sửa đổi theo nhu cầu. – Sarfraz

+0

thậm chí tốt hơn: '$ ('# nav, #container, .stretch_footer, #footer'). Attr ('id', $ (this) .text());' .. không phải bằng cách sử dụng ID ở đây là tốt ý kiến. – nickf

6
$('selector').attr('id', 'yourId'); 
18

Hãy ghi nhớ này ghi đè bất kỳ ID rằng nguyên tố này đã có:

$(".element").attr("id","SomeID"); 

Lý do tại sao addClass tồn tại là vì một yếu tố có thể có nhiều lớp, vì vậy bạn sẽ không nhất thiết phải ghi đè lên các lớp đã được thiết lập. Nhưng với hầu hết các thuộc tính, chỉ có một giá trị được phép tại bất kỳ thời điểm nào.

4

nếu bạn muốn 'thêm vào id' thay vì thay thế nó

chụp id hiện tại trước, sau đó nối id mới của bạn. đặc biệt hữu ích cho twitter bootstrap sử dụng trạng thái đầu vào trên biểu mẫu của chúng.

new_id = '{{old_id}} inputSuccess'; 
    old_id = that.attr('id'); 
    that.attr('id', new_id.replace(/{{old_id}}/ig,old_id)); 

nếu bạn không - bạn sẽ mất bất kỳ thuộc tính nào bạn đã đặt trước đó.

hth,

3

Im làm điều này trong coffeescript

booking_module_time_clock_convert_id =() -> 
    if $('.booking_module_time_clock').length 
    idnumber = 1 
    for a in $('.booking_module_time_clock') 
     elementID = $(a).attr("id") 
     $(a).attr('id', "#{elementID}_#{idnumber}") 
     idnumber++ 
Các vấn đề liên quan