JqueryですべてのClickイベントハンドラーを削除する方法
-
05-07-2019 - |
質問
問題が発生しています。基本的に、ユーザーがページの「編集」リンクをクリックすると、次のJqueryコードが実行されます。
$("#saveBtn").click(function () {
saveQuestion(id);
});
これにより、保存ボタンのonClickイベントは saveQuestion()
メソッドを呼び出し、「編集」リンクがクリックされた質問のIDを渡します。
ただし、同じセッションでユーザーが2つの質問の編集をクリックすると、前の click
イベントハンドラーを上書きする代わりに、2つのイベントハンドラーが実行され、1つは saveQuestion(1)
ともう一方は saveQuestion(2)
を呼び出す場合があります。これにより、1つの質問がもう1つの質問を上書きします。
ボタンに割り当てられている以前のすべての click
イベントを削除する方法はありますか?
解決
off()を使用して、次のようなイベントを削除します。
$("#saveBtn").off("click");
ただし、これにより、この要素にバインドされているすべてのクリックイベントが削除されます。 SaveQuestionを使用した関数が唯一のバインドされたイベントである場合、上記がそれを行います。そうでない場合は、次を実行します。
$("#saveBtn").off("click").click(function() { saveQuestion(id); });
他のヒント
ボタンに割り当てられている以前のクリックイベントをすべて削除する方法はありますか?
$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});
$('#saveBtn').off('click').click(function(){saveQuestion(id)});
使用した場合...
$(function(){
function myFunc() {
// ... do something ...
};
$('#saveBtn').click(myFunc);
});
...その後、後でバインドを解除する方が簡単になります。
所属していません StackOverflow