jQuery:contains(),但匹配一个确切的字符串
如标题中所述,我想找到类似于:contains()
但匹配精确字符串的内容。 换句话说,它不应该是部分匹配。 例如,在这种情况下:
John
Johny
$("#id:contains('John')")
将匹配John
和Johny
,而我只想匹配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
简单的方法是使用伪函数“通过精确匹配选择元素”。
解决方案 通过其内容的完全匹配选择元素