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

filter代わりに、より簡潔にすることをお勧めします。

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

i大文字と小文字を区別する場合は、フラグを削除できます。

于 2012-11-05T20:23:17.030 に答える
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 に答える