2

我正在尝试使用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>
4

3 回答 3

5

这是你想要的?

小提琴

$(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。

于 2013-08-19T15:07:55.557 回答
3

没有filter那么简单

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

工作演示

于 2013-08-19T15:08:02.963 回答
1
$(this).text() == 'two';

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

于 2013-08-19T15:09:43.890 回答