2012-11-05 57 views
0

我有一些代碼,看起來是這樣的:li.toUpperCase():不選擇困難

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

調用時,這會變成一個不包含我的關鍵字紅色的一切。

但是,這不是不區分大小寫的搜索。爲了做到這一點,我試過這樣的事情:

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

但是,這只是引發錯誤。

我怎樣才能做一個:沒有(:包含搜索是不區分大小寫

+1

爲什麼不使用'filter()'? –

回答

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()選擇器作爲case-ins靈感,你已經發現它不是。

+1

+1但是你錯過了區分大小寫刪除 –

+1

哦,它的意思是*區分大小寫。 –

+1

儘管OP陳述「這不是一個不區分大小寫的搜索」,但他的「toUpperCase」試圖表明不然。對我來說,代碼說話比段落更好 –

2

我建議你用filter做相反,它更簡潔:

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

,如果你希望它是區分大小寫的,您可以刪除i標誌。