6

jquery トグル スクリプトを使用してアクティブな CSS スタイルを取得する複数のボタンがあります。しかし、一度に 1 つのボタンだけをアクティブにしたいのです。また、アクティブなボタンを再度クリックすると、非アクティブになる必要があります。

$(document).ready(function(){
    $('.button').click(function() {       
        $(this).toggleClass('buttonactive');
    });
});

基本的に、次の行を追加する必要があります。

$(all .button except this).removeClass('buttonactive');

方法がわかりません。誰かが私を助けることができますか?ここに問題のある JSFIDDLE があります: http://jsfiddle.net/nV5Tu/3/

4

4 に答える 4

9

.toggleClass() を使用して現在の要素を切り替えると、.not()使用して現在の要素を除外し、クラスが削除されないようにすることができます。

$('.button').click(function() {  
    $('.button').not(this).removeClass('buttonactive'); // remove buttonactive from the others
    $(this).toggleClass('buttonactive'); // toggle current clicked element
});

フィドル

于 2013-01-23T14:59:53.057 に答える
1

これでうまくいくはずです:

$(document).ready(function(){
    $('.button').click(function() {
        if($(this).hasClass("buttonactive")) {       
            $(this).removeClass('buttonactive');
        } else {
            $(this).addClass('buttonactive');
        }
        $(".button").removeClass("buttonactive"); // removes all other active classes
    });
});
于 2013-01-23T14:43:35.533 に答える
1

for all を単純に削除して for を追加しないのはなぜthisですか?

$('.button').click(function() {       
    $('.button').removeClass('buttonactive');    
    $(this).addClass('buttonactive');
});
于 2013-01-23T14:44:45.343 に答える
0

3つは必要ありませんdocument.ready(function()..1つで十分です..。

$('.button').click(function() { 
 $(".button").removeClass("buttonactive");  // remove the class for all button on click
});

ここをいじる

于 2013-01-23T14:46:06.113 に答える