2016-08-09 5 views
-1

私は奇妙な動作を発見しました。確かに分かっていますが、修正方法はわかりません。jquery:クラスを変更していますが(変化しません)

現在のクラスに応じて2つの異なる操作を行う必要があるボタンがあります。

クリックすると、それはこのように、次のクリックでさまざまなアクションを行います、そのクラスを切り替えます。.. が、クラスがあるために

を変更していないようにそれは、「古い」アクションを実行し続けよりクリア...

ここ

相対Fiddle

あなたはボタンAをクリックしたとき、それはAAAと2つのボタンを書き込みことがわかりますしたがって、それはすべてOK

ようです。しかし、あなたがclass bボタンが押されたときにどうするかであることBBBを書くの再度ボタンAを代わりにクリックした場合、それが再びAAA

を書き込みます。■(色が変化しているので)自分のクラスを切り替えます明らかに、2つのボタンには2つのボタンがあり、クラスを交換する代わりに2つのボタンを切り替えることができますが、私が何か間違っているのか、この奇妙な動作の理由を理解したいと思います。

よろしく

+0

キーポイントは、あなたが持っているということですイベントハンドラを**要素**にバインドします。要素(この場合はクラス)の属性の値を変更しても、それにバインドされるイベントハンドラには影響しません。 –

+0

はい、これも私にとっては明らかでしたが、対処方法はわかりませんでした。 – Joe

答えて

3

あなたがイベントを結合するために使用されているクラスの追加や削除されるイベントの委任を使用する必要があります。ここに

$('body').on('click','.a',function(){ 
    $('#R').html('AAA'); 
    $('#A').addClass('b').removeClass('a'); 
    $('#B').addClass('a').removeClass('b'); 
}); 
$('body').on('click','.b',function(){ 
    $('#R').html('BBB'); 
    $('#B').addClass('b').removeClass('a'); 
    $('#A').addClass('a').removeClass('b'); 
}); 

Working Demo

+0

OK、多くのイベントの委任を知らなかった..しかし、なぜdownvoted?そんなに悪い質問ですか? – Joe

+0

@Joe:ダウンした人ではありませんが、問題のコードを追加していません。 –

+0

まあ、とにかく、それを完全に示すために私はフィドルを作った:重要なことは、問題を解決することです、あなたの提案はそれをしました。 – Joe

関連する問題