1

我有一个列表,我正在检查列表项是否有两个特定的类。如果是这样,我想将该列表项的背景更改为蓝色。但是我的代码似乎不起作用。如何定位该特定列表项?警报工作正常,只是颜色不起作用。

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");
            }
4

3 回答 3

2

使用类选择器而不是hasClass()将允许您使用单个选择器实现您正在寻找的内容,并获得对您要修改的元素的引用:

$("#all-colls-list li:contains(" + itemName + ").groupAdded.selAdded")
    .css("background-color", "blue");
于 2012-07-31T10:46:19.307 回答
0
$("#all-colls-list li:contains(" + itemName + ")").each(function(){
    if ($(this).hasClass("groupAdded") && $(this).hasClass("selAdded")) {
        $(this).css("background-color", "blue");
    }
})
于 2012-07-31T10:45:37.530 回答
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");
                }
于 2012-07-31T10:47:28.437 回答