2009-03-30 36 views
28

Tôi cần tìm và lặp qua tất cả các phần tử con có thuộc tính cụ thể. Mã sau đây hoạt động tốt trong jquery 1.2.6, nhưng ném ngoại lệ trong 1.3.2jquery v1.3.2 tìm phần tử theo thuộc tính

$(parentElement).find('*[@someAttributeName]').each(function(index){ 
    doSomething(this); 
}); 

Cách chính xác để đạt được điều đó là gì?

Trả lời

40

Chỉ cần loại bỏ @, tôi tin.

$(parentElement).find('[someAttributeName]').each(function(index){ 
    doSomething(this); 
}); 

Từ các tài liệu jQuery selector:

Lưu ý: Trong jQuery 1.3 [@attr] phong cách selectors đã được gỡ bỏ (họ trước đó bị phản đối trong jQuery 1.2). Chỉ cần xóa ký hiệu '@' khỏi bộ chọn của bạn để làm cho chúng hoạt động một lần nữa.

+0

Biểu tượng @ là từ loại XPath chọn ban đầu, IIRC – alex

+0

cách nào tìm kiếm theo công attribue bằng giá trị cụ thể? –

+1

Bạn có thể sử dụng đơn giản '$ ('div [someAttributeName]'). Each()' để tìm theo thuộc tính –

2

Lưu ý "@" trước khi tên thuộc tính không được chấp nhận kể từ phiên bản 1.2.

$(parentElement).find('*[someAttributeName]').each(function(index){ 
    doSomething(this); 
}); 

Chỉ cần xóa nó và bạn tốt để đi.

2

[@attribute] ký hiệu không được dùng nữa trong jQuery 1.3. Hãy xóa dấu hiệu @ và bạn nên đi.

0

Không hoạt động đối với tôi trong IE khi tôi muốn tìm đầu vào với required="".

Hoạt động khi tôi đổi thành required="required". Có lẽ kết hợp khác cũng làm việc https://stackoverflow.com/a/3012975/588759

1

ithink đây là cách tốt nhất để tìm kiếm và có thể thay đổi một cái gì đó của nó

$('.youritem').each(function(){ 
          if($(this).attr('title') == 'add image') 
              $(this).attr('id','imageuploader'); 

         }); 
Các vấn đề liên quan