【问题标题】:JQuery select element if *any* attribute matches如果 *any* 属性匹配,则 JQuery 选择元素
【发布时间】:2012-01-12 08:41:16
【问题描述】:

我想要一个像 $(".author") 这样的选择器,如果“作者”是任何属性的值,而不仅仅是类的值,它将选择一个元素。

例如selector.text() 应该为以下每个页面提供“Emily 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>

有什么办法吗?

【问题讨论】:

  • CSS/XPath stackoverflow.com/questions/5634278/… 的相关问题(我想不出一个 CSS 选择器,只有一个 XPath 表达式,而且我不确定 jQuery 是否支持匹配任何属性,因为 CSS 不支持't...)
  • 你永远不需要这样做。
  • @BoltClock 请注意,有些浏览器支持document.evaluate,它采用XPath 表达式。

标签: jquery html jquery-selectors


【解决方案1】:
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,它会将背景颜色更改为红色.

【讨论】:

  • 我认为您错过了a couple of attributes ;p 我知道大多数情况对于这种情况没有意义,但特别要求匹配 any 属性的问题。
  • @JesseB:实际上,我会尽快回复你。
  • 我忘了说,标签也不一定是。我编辑了问题。
  • 我不知道.attributes 选项; +1! =)
  • 谢谢!我将如何获得匹配元素的文本节点?并将搜索限制在正文中?
【解决方案2】:

希望对你有帮助

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

【讨论】:

【解决方案3】:

我会使用@Web Developer 的答案,但会补充一点,如果您需要多次选择它们,那么将选择另存为var 会更有效:

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

$target.text();

这里有一些关于属性选择器的文档:

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

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

https://github.com/jquery/sizzle/wiki/Sizzle-Home(jQuery 使用 Sizzle)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 2014-11-26
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    相关资源
    最近更新 更多