根据文本内容过滤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”。