129

問題が発生しています。基本的に、ユーザーがページの [編集] リンクをクリックすると、次の Jquery コードが実行されます。

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

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

しかし、同じセッションでユーザーが 2 つの質問の編集をクリックすると、前のclickイベント ハンドラーを上書きする代わりに、代わりに 2 つのイベント ハンドラーが実行され saveQuestion(1)ますsaveQuestion(2)。これを行うと、1 つの質問が他の質問を上書きします。

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

4

5 に答える 5

218

次のようにoff()を使用してイベントを削除します。

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

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

$("#saveBtn").off("click").click(function() { saveQuestion(id); });
于 2009-05-05T14:42:27.383 に答える
13

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

$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});
于 2009-05-05T14:30:24.463 に答える
7
$('#saveBtn').off('click').click(function(){saveQuestion(id)});
于 2013-04-26T21:01:30.403 に答える
2

使っていたら...

$(function(){
    function myFunc() {
        // ... do something ...
    };
    $('#saveBtn').click(myFunc);
});

...そうすれば、後でバインドを解除するのが簡単になります。

于 2009-05-05T14:43:30.283 に答える