正如标题中所说,我想找到类似:contains()
但要匹配精确字符串的内容。换句话说,它不应该是部分匹配。例如在这种情况下:
<div id="id">
<p>John</p>
<p>Johny</p>
</div>
$("#id:contains('John')")
将同时匹配John
和Johny
,而我只想匹配John
.
提前致谢。
编辑: ES2015 单行解决方案,以防万一有人寻找它:
正如标题中所说,我想找到类似:contains()
但要匹配精确字符串的内容。换句话说,它不应该是部分匹配。例如在这种情况下:
<div id="id">
<p>John</p>
<p>Johny</p>
</div>
$("#id:contains('John')")
将同时匹配John
和Johny
,而我只想匹配John
.
提前致谢。
编辑: ES2015 单行解决方案,以防万一有人寻找它:
您可以filter
为此使用:
$('#id').find('*').filter(function() {
return $(this).text() === 'John';
});
编辑:就像性能说明一样,如果您碰巧更了解您正在搜索的内容的性质(例如,节点是 的直接子节点#id
),使用类似的东西.children()
而不是.find('*')
.
这是它的 jsfiddle,如果你想看到它的实际效果:http : //jsfiddle.net/Akuyq/
jmar777 的回答帮助我解决了这个问题,但为了避免搜索我从 :contains 选择器开始并过滤其结果的所有内容
var $results = $('#id p:contains("John")').filter(function() {
return $(this).text() === 'John';
});
这是更新的小提琴http://jsfiddle.net/Akuyq/34/
您可以尝试编写正则表达式并从中搜索:Regular expression field validation in jQuery
简单的方法是使用伪函数“通过精确匹配选择元素”。
解决方案 通过其内容的完全匹配来选择元素