2012-07-31 50 views
1

我有一個列表,我正在檢查列表項是否有兩個特定的類。如果是這樣,我想將該列表項目的背景更改爲藍色。但是我的代碼似乎不工作。我如何定位該特定列表項?警報工作正常,只是沒有的顏色。在jquery中的目標列表項

if (($("#all-colls-list li:contains(" + itemName + ")").hasClass("groupAdded")) && ($("#all-colls-list li:contains(" + itemName + ")").hasClass("selAdded"))) { 
       $(this).css("background-color", "blue"); 
       alert("has both classes"); 
      } 

回答

2

使用的class selectors代替hasClass()將讓你實現你要找的內容與一個單一的選擇,並獲得你要修改的元素的引用:

$("#all-colls-list li:contains(" + itemName + ").groupAdded.selAdded") 
    .css("background-color", "blue"); 
+0

很好的一招。 – bingjie2680 2012-07-31 10:47:32

0
$("#all-colls-list li:contains(" + itemName + ")").each(function(){ 
    if ($(this).hasClass("groupAdded") && $(this).hasClass("selAdded")) { 
     $(this).css("background-color", "blue"); 
    } 
}) 
0

$(this)可能是未定義的,因爲您直接在if中訪問該元素。再次調用所有選擇器。 css功能應該能解決你的問題

if (($("#all-colls-list li:contains(" + itemName + ")").hasClass("groupAdded")) && ($("#all-colls-list li:contains(" + itemName + ")").hasClass("selAdded"))) { 
        $("#all-colls-list li:contains(" + itemName + ")").css("background-color", "blue"); 
        alert("has both classes"); 
       }