jQuery选择器 - 匹配元素内容

8

请问是否有任何一种方式 - 任何jQuery选择器(我在http://api.jquery.com/category/selectors/上没有找到),可以用作精确匹配?

:contains()几乎是我需要的,但不完全相同。 “:contains”在每个元素中搜索类似于正则表达式的内容:

.*<query>.*

这意味着,如果我需要找到一个链接,它看起来就像这样:
<a href="#">Baxter</a>

并使用以下内容:

$("a:contains('Baxter')")

它也匹配了我不想匹配的这个:

<a href="#">I'm Peter Baxter, how are you?</a>

我知道,我可以在循环中取出所有元素并比较它们的内容,但我想确保没有更简单的方法。

1个回答

12

不可以,但是将其作为插件添加非常简单:

$.expr[':'].contentIs = function(el, idx, meta) {
    return $(el).text() === meta[3];
};

您可以将此用作 $('a:contentIs("Baxter")')


这是一个非常好的小扩展。我想知道为什么这不在核心中。 - pscheit
1
@P.scheit 这个计算量相当大,而且价格也很昂贵... 不过回头看看,可以通过使用 $.text([el]) 而不是 $(el).text() 来改进它。 - lonesomeday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接