Javascript li.toUpperCase():不是选择器困难

Javascript li.toUpperCase():不是选择器困难,javascript,jquery,Javascript,Jquery,我有一些代码如下所示: $('.myList li:not(:contains(' + myWord + '))').css({'color' : red' }); $('.myList li.'+toUpperCase()+':not(:contains(' + myWord.toUpperCase() + '))').css({'color' : 'red' }); 调用时,这将使不包含我的关键字的所有内容变为红色 但是,这不是不区分大小写的搜索。为了做到这一点,我尝试了以下方法: $(

我有一些代码如下所示:

$('.myList li:not(:contains(' + myWord + '))').css({'color' : red' });
$('.myList li.'+toUpperCase()+':not(:contains(' + myWord.toUpperCase() + '))').css({'color' : 'red' });
调用时,这将使不包含我的关键字的所有内容变为红色

但是,这不是不区分大小写的搜索。为了做到这一点,我尝试了以下方法:

$('.myList li:not(:contains(' + myWord + '))').css({'color' : red' });
$('.myList li.'+toUpperCase()+':not(:contains(' + myWord.toUpperCase() + '))').css({'color' : 'red' });
但这只会带来错误


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

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

$('.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' });

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

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

$('.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' });

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

我建议您使用
过滤器来执行此操作,它更简洁:

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

如果希望
i
标志区分大小写,则可以将其删除。

我建议您使用
过滤器执行此操作,因为它更简洁:

$('.myList li').filter(function() {
  return !new RegExp(myWord, 'i').test($(this).text());
}).css('color', 'red');
如果你想让它区分大小写,你可以删除
i
标志。

哦,它是不区分大小写的..?虽然OP声明“这不是一个不区分大小写的搜索”,但他的
toUpperCase
attemp建议相反。对我来说,代码比段落Soh更好,它是不区分大小写的..?虽然OP声明“这不是一个不区分大小写的搜索”,他的
toUpperCase
attemp提出了相反的建议