1

リストがあり、リスト項目に 2 つの特定のクラスがあるかどうかを確認しています。もしそうなら、そのリスト項目の背景を青に変更したい. ただし、私のコードは機能していないようです。その特定のリスト項目をターゲットにするにはどうすればよいですか? アラートは正常に機能しますが、機能しないのは色だけです。

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()の代わりにクラス セレクターを使用すると、探しているものを 1 つのセレクターで実現し、変更する要素への参照を取得できます。

$("#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 に答える