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

时间:2013-08-19 15:03:42

标签: javascript jquery dom jquery-selectors dom-manipulation

我正在尝试将contains与'this'关键字一起使用,但它会出错。

JS

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

HTML

<ul>
    <li id="one">one</li>
    <li id="two">two</li>
    <li id="one">one</li>
    <li id="two">two</li>
    <li id="one">one</li>
    <li id="two">two</li>
    <li id="one">one</li>
    <li id="two">two</li>
    <li id="one">one</li>
    <li id="two">two</li>
</ul>

3 个答案:

答案 0 :(得分:5)

这是你在找什么?

Fiddle

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

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

Fiddle

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

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

Performance test created for this specifically
Another related test

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

答案 1 :(得分:3)

没有filter就像

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

WORKING DEMO

答案 2 :(得分:0)

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

获取当前li的文字&amp;检查它是否具有值“2”。