私は簡単なコードで問題を説明しようとします。
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').click(fireclick);
したがって、今では明らかに2回アラートを出しますが、1回だけアラートが必要です。いろいろ試してみましたが、結果はありませんでした。
ありがとう。
JQuery 1.7では、 off を使用してイベントハンドラーを削除し、 on を使用してイベントハンドラーを追加する必要がありますが、click
ショートハンドを使用できます。
$('#clickme').off('click').on('click', fireclick);
$('#clickme').off().on('click', fireclick);
元の回答:
すべてのクリックハンドラを置き換える場合は、関数引数なしで最初に nbind を呼び出します。すべてのイベントハンドラを置き換える場合は、イベントタイプを指定しないでください。
$('#clickme').unbind('click').click(fireclick);
$('#clickme').unbind().click(fireclick);
名前空間を使用して、他のリスナーを削除しないようにします。
$('#clickme').off('click.XXX').on('click.XXX', fireclick);
他のコードがXXX
を使用していない限り、気付いていない他の動作を台無しにしないようにすることができます。
JQuery関数 nbind を使用して、最初のイベントを削除できます。
var fireClick = function() { alert('Wuala!!!') };
$('#clickme').click(fireclick);
$('#clickme').unbind('click', fireClick); // fireClick won't fire anymore...
$('#clickme').click(fireclick); // ...but now it will
私は余分な呼び出しを排除しようとしますが、それ以外の場合は、これらの両方を必ず呼び出すようにしてください:
$('#clickme').unbind('click', fireclick);
$('#clickme').click(fireclick);