jQuery を使用してすべてのクリック イベント ハンドラーを削除するにはどうすればよいでしょうか? 質問する

jQuery を使用してすべてのクリック イベント ハンドラーを削除するにはどうすればよいでしょうか? 質問する

問題があります。基本的に、ユーザーがページ上の「編集」リンクをクリックすると、次の JQuery コードが実行されます。

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

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

しかし、同じセッションでユーザーが 2 つの質問の編集をクリックした場合、以前のclickイベント ハンドラーが上書きされるのではなく、2 つのイベント ハンドラーが実行され、1 つは を呼び出しsaveQuestion(1)、もう 1 つは を呼び出す可能性がありますsaveQuestion(2)。これにより、1 つの質問が他の質問を上書きします。

clickボタンに割り当てられた以前のイベントをすべて削除する方法はありますか?

ベストアンサー1

使用する場合はオフ()次のようにイベントを削除します:

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

しかし、これは削除しますすべてのクリックイベントこの要素にバインドされています。SaveQuestion を含む関数がバインドされている唯一のイベントである場合は、上記の操作を実行します。そうでない場合は、次の操作を実行します。

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

おすすめ記事