0

特定のクラス (class="off") のない div のクリックを検出しています。関数の最後に、ページを更新した後に一部の php コードをトリガーしてクラス "off" を追加する Cookie が設定されます。ページをクリックして更新すると、関数のアクションはその特定の div で機能しなくなります。これまでのところすべて良い...

私が抱えている問題は、ページを更新することなく、クリックされた div で機能を停止したいということです。関数の最後に .addClass を使用してクラスを追加しようとしましたが、div をクリックすると動作し、「オフ」クラスが追加されますが、もう一度クリックすると、関数は引き続き div で動作します。元の html コードへの変更が検出されていないように感じます。

ワンクリックで動作を停止するにはどうすればよいですか?

$('#example').not('.off').click(function() {
// do stuff
$('#example').addClass('off');
}

みんなありがとう。

4

3 に答える 3

0

追加のクラスを使用せず、イベントハンドラーを単純に削除するのはどうですか.off

$('#example').click(function() {
  $(this).off('click');
});
于 2013-03-27T20:06:07.080 に答える
0

$(this)代わりに使用してください。

$('#example').not('.off').click(function() {
    $(this).addClass('off');
});

または、イベントを一度トリガーしたい場合は、one

$('#example').one('click', function() {
    // this code will be executed once per element
});
于 2013-03-27T19:58:15.180 に答える
0

要素にバインドされたハンドラーは、クラスを削除するだけでは削除できません。ハンドラーもバインド解除する必要があります

$('#example').not('.off').on('click', function() {
    // do stuff
    $('#example').addClass('off');
    //remove the event handler
    $('#example').off('click');
}

別の解決策は、divにすでにクラスがあるかどうかを確認できることです

if($('#example').hasClass("off"))
{
    return;
}

これは代替ソリューションです。これをクイックフィックスと呼びます。

于 2013-03-27T20:03:40.020 に答える