0

以下では、クラス「item1」を削除し、クラス item2 を maindiv に追加します。以下のコードは機能しません。コードの何が問題なのですか? item2 を maindiv に含めるにはどうすればよいですか?

HTML:

<div class="item2"><a href="#" id="item2">item2</a></div>
<div class="maindiv">
    <div class="item1"> <a href="#" id="item1">item1</a></div>
</div>

jQuery:

if (selection) {
    if ($('.maindiv').hasClass('item1')) {
        $('.maindiv').removeClass('item1').addClass('item2');
    }
}
4

5 に答える 5

2

あなたの例で.maindivは、という名前のクラスがなく、そのクラスをitem1持つ があります。それがあるかどうかをテストしています。

次のように修正することをお勧めします。

if($('.maindiv > div').hasClass('item1')) {
    $('.maindiv > div')
        .removeClass('item1')
        .addClass('item2');
}

または

if($('.maindiv .item1').length > 0) {
    $('.maindiv .item1')
        .removeClass('item1')
        .addClass('item2');
}

...読みやすいと思う方。

于 2013-04-02T11:44:04.240 に答える
0

この.hasClass()関数は、呼び出されている要素にそのクラスがあることを確認します(あなたの場合はそうではありません)。それらの要素にそのクラスの要素が含まれているかどうかはチェックしません。

<div class="item1">and<div class="item2">要素であり、クラスではありません。item1およびitem2これらの要素のクラスです。あなたはクラスとは何か、.hasClass(),.addClass().removeClass()関数が何をするかについて混乱しているように見えるので、戻って基本をカバーすることをお勧めします.

于 2013-04-02T11:45:25.807 に答える
0

$('#maindiv').find('item1')そして、あなたはそれを連鎖させることができます。

于 2013-04-02T11:47:24.160 に答える
-1

次のようなより良い解決策のために id コンパレータを使用してください

アイテム1
<div class = "maindiv"> 
<div id="test" class = "item1" >  <a href="#" id="item1">item1</a> </div>
</div>

if(selection)
            {             
                if ( $('#test').hasClass('item1') ) {
                            $('#test').removeClass('item1').addClass('item2');

                }


            }
于 2013-04-02T11:51:43.493 に答える