私は 2 つの jQuery 関数を作成しました。簡略化されたバージョンは次のように実行されます。
$('button.class').not('.selected').on('click', function() {
console.log('not selected');
console.log($(this));
$(this).addClass('selected');
}
$('button.class.selected').on('click', function() {
console.log('selected');
console.log($(this));
$(this).removeClass('selected');
}
ボタンをクリックすると、常にコンソールに次のように記録されます。
not selected
[<button class="someClass1 someClass2 selected">Text</button>]
Web インスペクターは、ボタンをクリックする前にこれを表示します:
<button class="someClass1 someClass2">Text</button>
そしてこれをクリックした後:
<button class="someClass1 someClass2 selected">Text</button>
もう一度クリックしても何も変わりません。
への切り替えはオンとオフの切り替えaddClass()
にtoggleClass()
成功し'selected'
ますが、それでも常にログnot selected
に記録されます。これは、セレクターで何かが起こっていることを示唆しています。明らかに要素'selected'
に関連付けられたクラスの 1 つであっても、最初の関数が常に呼び出されるのはなぜですか?button
'selected'
いくつかのソリューションをテストしているときに、 のクラスとしてハード コーディングbutton
すると逆の問題が発生することに気付きましたtoggleClass()
。jQueryを介して追加されたクラスはクラスとして「カウント」されませんか?