2011-12-03 66 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

相关问题