129

我有问题。基本上,当用户单击页面上的“编辑”链接时,会运行以下 Jquery 代码:

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

通过这样做,保存按钮的 onClick 事件调用该saveQuestion()方法并传递单击“编辑”链接的问题的 ID。

但是,如果在同一个会话中,用户在 2 个问题上单击编辑,那么它不会覆盖先前的click事件处理程序,而是会导致 2 个事件处理程序运行,一个可能会调用 saveQuestion(1),另一个可能会调用saveQuestion(2). 通过这样做,一个问题会覆盖另一个问题。

有没有办法删除所有以前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 回答
0
$('#saveBtn').off('click').on('click',function(){
   saveQuestion(id)
});

使用jquery的开关

于 2016-12-21T18:23:12.743 回答