1. ホーム
  2. javascript

[解決済み] jQueryを使用して、すべてのクリックイベントハンドラを削除するにはどうすればよいですか?

2022-07-23 08:16:57

質問

問題が発生しました。基本的に、ユーザーがページ上の「編集」リンクをクリックすると、以下のJqueryコードが実行されます。

$("#saveBtn").click(function () {
    saveQuestion(id);
});

このようにすることで、保存ボタンのonClickイベントから saveQuestion() メソッドを呼び出し、'Edit'リンクがクリックされた質問のIDを渡します。

しかし、同じセッションにおいて、ユーザーが2つの質問で編集をクリックした場合、以前の click イベントハンドラを上書きする代わりに、2つのイベントハンドラが実行され、そのうちの1つは saveQuestion(1) を呼び出し、もう一方は saveQuestion(2) . このようにすることで、1つの質問が他の質問を上書きします。

以前のすべての click イベントを削除する方法はありますか?

どのように解決するのですか?

あなたは off() を使って、このようにイベントを削除します。

$("#saveBtn").off("click");

を削除しますが、これによって すべてのクリックイベント を削除します。もし、SaveQuestionの関数が結合された唯一のイベントであれば、上記はそれを行います。そうでない場合は、次のようにしてください。

$("#saveBtn").off("click").click(function() { saveQuestion(id); });