如何使用 jQuery 删除所有单击事件处理程序?

我遇到了一个问题。基本上,当用户点击页面上的“编辑”链接时,下面的 Jquery 代码会运行:

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

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

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

有没有办法删除以前分配给按钮的所有 click事件?

143421 次浏览

是否有办法删除分配给按钮的所有以前的单击事件?

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

您可以使用 关掉来删除这样的事件:

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

但这将删除绑定到该元素的 所有点击事件。如果保存问题的函数是唯一绑定的事件,那么上面的函数将执行此操作。如果不这样做:

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

如果你用了..。

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

那以后解开就容易多了。

$('#saveBtn').off('click').click(function(){saveQuestion(id)});
$('#saveBtn').off('click').on('click',function(){
saveQuestion(id)
});

使用 jquery 的 关掉开始