問題があります。基本的に、ユーザーがページの「編集」リンクをクリックすると、次のJqueryコードが実行されます。
$("#saveBtn").click(function () {
saveQuestion(id);
});
これにより、保存ボタンのonClickイベントはsaveQuestion()
メソッドを呼び出し、「編集」リンクがクリックされた質問のIDを渡します。
ただし、同じセッションでユーザーが2つの質問の編集をクリックすると、前のclick
イベントハンドラーを上書きする代わりに、2つのイベントハンドラーが実行されます。1つはsaveQuestion(1)
を呼び出し、もう1つはsaveQuestion(2)
を呼び出します。これを行うと、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);
});
...その後、後でバインドを解除する方が簡単になります。