Jquery 是否有任何选择器可以对文本进行完美匹配?

Jquery 是否有任何选择器可以对文本进行完美匹配?,jquery,Jquery,在jQuery上,我正在寻找一个类似于:contains的选择器,但我需要对元素文本进行完美匹配。有吗 <div>1</div> <div>12</div> <div>13</div> <div>135</div> 1 12 13 135 因此,如果我查找text=1,我只会得到第一个div,可以这样做: var str = "whatever"; $(".elements").filter(f

在jQuery上,我正在寻找一个类似于
:contains
的选择器,但我需要对元素文本进行完美匹配。有吗

<div>1</div>
<div>12</div>
<div>13</div>
<div>135</div>
1
12
13
135
因此,如果我查找
text=1
,我只会得到第一个
div

,可以这样做:

var str = "whatever";

$(".elements").filter(function() {
    return $(this).text() == str;
});

您可以制作一个:

$.extend($.expr[":"], {
    exactly: function( element, index, details, collection ){
        return $(element).text() === details[3];
    }
});

$("div:exactly(Foo)").addClass("red");
$("div:exactly(230)").addClass("blu");

Fiddle:

不会
返回$(this)。text()==string
更合适,因为
innerHTML
将查看HTML结构和文本内容?@DavidThomas yes。。我认为你是对的。对于一般解决方案,它更好。谢谢虽然答案是正确的,但我真的很惊讶这一点被乔纳森·桑普森所接受=/对于我的特定场景,这是最好的解决方案。我同意Jonathan Sampson建议创建一个选择器,以便在不同的位置使用它。如果文本是
12
,并且我查找
1
包含的内容,则会匹配,除非我缺少某些内容。这不是我想要的,我需要做一个完美的匹配。@TimmyO'工具检查演示,它做的和你一样want@thecodeparadox当前位置我当时说你的答案不是我需要的,你有一个完全不同的代码。VisioN已经发布了此解决方案。无论如何谢谢你!您是在寻找div之类的元素的innerHTML,还是输入字段之类的元素的值?哦哦…这太棒了。出于好奇,您能指出这种方法的文档吗?这是我以前从未见过的(据我记忆所及)@DavidThomas和j08691我要写点东西-我会告诉你什么时候有。@DavidThomas现在有了:@JonathanSampson-太棒了,谢谢。也许你应该在这里发布一个问题,比如“如何创建一个自定义jQuery过滤器?”然后发布你的博客文章作为答案。我会+1;)
$.extend($.expr[":"], {
    exactly: function( element, index, details, collection ){
        return $(element).text() === details[3];
    }
});

$("div:exactly(Foo)").addClass("red");
$("div:exactly(230)").addClass("blu");