2011-12-03 37 views
8

Tôi muốn một bộ chọn như $(".author") sẽ chọn một phần tử nếu "tác giả" là giá trị của bất kỳ thuộc tính nào, không chỉ là lớp.Phần tử chọn jQuery nếu thuộc tính * any * khớp với

Ví dụ: selector.text() nên cung cấp cho "Emily Ekins" cho mỗi người trong số những trang sau:

<a href="http://reason.com/people/emily-ekins" rel="author">Emily Ekins</a> 

hoặc

<bloop href="http://reason.com/people/emily-ekins" id="author">Emily Ekins</a> 

hoặc

<blah href="http://reason.com/people/emily-ekins" class="author">Emily Ekins</a> 

hoặc

<tag href="http://reason.com/people/emily-ekins" random="author">Emily Ekins</a> 

Có cách nào để làm cái này?

+0

câu hỏi liên quan cho CSS/XPath http://stackoverflow.com/questions/5634278/css-or-xpath-selector-elements-which-have-any -giá trị-với-cụ thể-giá trị (Tôi không thể đi lên với một bộ chọn CSS, chỉ có một biểu thức XPath, và tôi không biết chắc chắn nếu jQuery hỗ trợ phù hợp với bất kỳ thuộc tính kể từ CSS không ...) – BoltClock

+0

Bạn nên không bao giờ cần phải làm điều này. – Incognito

+0

@BoltClock Lưu ý rằng một số trình duyệt hỗ trợ 'document.evaluate', có biểu thức XPath. –

Trả lời

12
var elements = document.getElementsByTagName("*"); 
for(var i=0;i<elements.length;i++){ 
    var element = elements[i]; 
    var attr = element.attributes; 
    for(var j=0;j<attr.length;j++){ 
     if(attr[j].nodeValue == 'author'){ 
      element.style.backgroundColor='red'; 
     } 
    } 
} 

Example

Whew! Điều đó mất một thời gian. Nhưng điều này sẽ kiểm tra mỗi thuộc tính duy nhất của bất kỳ phần tử đã cho nào và nếu bất kỳ thuộc tínhauthor, nó sẽ thay đổi màu nền thành đỏ.

+0

Tôi nghĩ rằng bạn đã bỏ lỡ [một vài thuộc tính] (http://www.w3.org/TR/html4/index/attributes.html); p Tôi biết hầu hết sẽ không có ý nghĩa cho trường hợp này, nhưng câu hỏi cụ thể yêu cầu khớp ** bất kỳ thuộc tính ** nào. – JesseBuesking

+0

@JesseB: Thực ra, tôi sẽ liên hệ lại với bạn về điều đó. – Purag

+0

Tôi quên nói rằng, thẻ không nhất thiết phải là . Tôi đã chỉnh sửa câu hỏi. – tarayani

5

Hope this helps

$("[id='author'],[class='author'],[name='author'],[data-random='author']").text() 
+0

dữ liệu ngẫu nhiên là gì? – tarayani

+1

@tarayani: HTML5 hỗ trợ các thuộc tính tùy chỉnh nếu chúng được đặt trước bởi 'data-'. – Purag

+0

@tarayani http://dev.w3.org/html5/spec/Overview.html # nhúng-tùy chỉnh-không nhìn thấy được-dữ liệu-với-các-dữ liệu-thuộc tính – ryanve

1

Tôi sẽ sử dụng câu trả lời @Web phát triển, nhưng sẽ bổ sung thêm rằng nếu bạn đang sẽ cần phải chọn chúng nhiều lần, sau đó nó hiệu quả hơn để lưu lựa chọn như một var :

var $target = $("[id='author'],[class='author'],[name='author']"); 

$target.text(); 

Dưới đây là một số tài liệu trên bộ chọn thuộc tính:

http://api.jquery.com/category/selectors/

http://www.w3.org/TR/css3-selectors/#attribute-selectors

https://github.com/jquery/sizzle/wiki/Sizzle-Home (jQuery sử dụng sizzle)

Các vấn đề liên quan