根据文本内容过滤jquery对象中的元素

我试图使用带有’this’关键字的contains ,但它给出了一个错误。

JS

 $(function(){ var check=$('ul').find('li').filter(function(){ return $(this:contains('two')).css('color','red') }) }) 

HTML

 
  • one
  • two
  • one
  • two
  • one
  • two
  • one
  • two
  • one
  • two

这是你想要的?

小提琴

 $(function () { $('ul').find('li').filter(function () { return this.innerHTML == 'two'; }).css('color','red') }) 

或者在元素中的任何位置匹配(而不是仅在其中的“两个”):

小提琴

 $(function () { $('ul').find('li').filter(function () { return /two/.test(this.innerHTML); }).css('color','red') }) 

此外,如果它很重要…链接方法( .find().filter() )似乎比使用contains更快:

为此特别创建的性能测试
另一个相关测试

并且你的id应该是唯一的 – 但我假设它只是复制/粘贴示例代码,并且实际上代码中实际上没有重复的id。

没有filter那么简单

 $("ul li:contains('two')").css('color', 'red'); 

工作演示

 $(this).text() == 'two'; 

获取当前li的文本并检查它是否具有值“two”。