0

我有一些看起来像这样的代码:

$('.myList li:not(:contains(' + myWord + '))').css({'color' : red' });

调用时,这会将不包含我的关键字的所有内容变为红色。

但是,这不是不区分大小写的搜索。为此,我尝试了这样的事情:

$('.myList li.'+toUpperCase()+':not(:contains(' + myWord.toUpperCase() + '))').css({'color' : 'red' });

但这只会引发错误。

如何进行不区分大小写的 :not(:contains 搜索?

4

2 回答 2

2

我建议一个更简单的方法:

$('.myList li').filter(function(){
    // I may have become lost in your approach, but the following
    // will filter the list to those nodes that *do not* contain
    // text equal to that contained in the myWord variable
    var text = $(this).text().toLowerCase();
    return text.indexOf(myWord.toLowerCase()) == -1;
}).css('color', red);

注意:

$('.myList li.'+toUpperCase()+':not(:contains(' + myWord.toUpperCase() + '))').css({'color' : 'red' });

您似乎正在搜索一个类名等于upperCase()函数的列表项(这不会发生),然后您希望强制:contains()选择器不区分大小写,您已经发现它是不。

于 2012-11-05T20:21:30.370 回答
2

我建议你filter改用它,它更简洁:

$('.myList li').filter(function() {
  return !new RegExp(myWord, 'i').test($(this).text());
}).css('color', 'red');

i如果您希望它区分大小写,可以删除该标志。

于 2012-11-05T20:23:17.030 回答