jQuery:contains(),但匹配一个确切的字符串

如标题中所述,我想找到类似于:contains()但匹配精确字符串的内容。 换句话说,它不应该是部分匹配。 例如,在这种情况下:

 

John

Johny

$("#id:contains('John')")将匹配JohnJohny ,而我只想匹配John

提前致谢。

编辑: ES2015单线解决方案,万一有人找到它:

 const nodes = [...document.querySelectorAll('#id > *')].filter(node => node.textContent === 'John'); console.log(nodes); 
 /* Output console formatting */ .as-console-wrapper { top: 0; } .as-console { height: 100%; } 
 

John

Johny

您可以使用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/

您可以尝试编写正则表达式并搜索它: jQuery中的正则表达式字段validation

简单的方法是使用伪函数“通过精确匹配选择元素”。

解决方案 通过其内容的完全匹配选择元素