2011-12-03 68 views
8

我想要一個類似$(".author")的選擇器,如果「author」是任何屬性的值而不僅僅是class,那麼它將選擇一個元素。如果* any *屬性匹配,則選擇jQuery元素

例如selector.text()應該給 「艾米麗Ekins」 每個以下頁面:

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

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

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

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

有什麼辦法做這個?

+0

對CSS/XPath的http://stackoverflow.com/questions/5634278/css-or-xpath-selector-elements-which-have-any相關問題-attribute-with-specific-value(我無法想出一個CSS選擇器,只有一個XPath表達式,並且我不確定jQuery是否支持匹配任何屬性,因爲CSS不會......) – BoltClock

+0

您應該從來不需要這樣做。 – Incognito

+0

@BoltClock請注意,有些瀏覽器支持'document.evaluate',它採用XPath表達式。 –

回答

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

呼!這花了一些時間。但是這將檢查的每個屬性任何給定的元素,如果任何屬性是author,它會將背景顏色更改爲紅色。

+0

我想你錯過了[幾個屬性](http://www.w3.org/TR/html4/index/attributes.html);我知道大多數對這個案例都沒有意義,但是具體的問題要求匹配任何**屬性。 – JesseBuesking

+0

@JesseB:其實,我會就此回覆你。 – Purag

+0

我忘了說,標籤也不一定是。我編輯了這個問題。 – tarayani

5

希望這有助於

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

什麼是數據隨機? – tarayani

+1

@tarayani:HTML5支持自定義屬性,前提是前面有'data-'。 – Purag

+0

@tarayani http://dev.w3.org/html5/spec/Overview。HTML嵌入#定製,不可見的數據與 - 該數據的屬性 – ryanve

相關問題