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

2022-08-30 04:29:57

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

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

通过执行此操作,保存按钮的 onClick 事件将调用该方法并传递单击了“编辑”链接的问题的 ID。saveQuestion()

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

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


答案 1

您可以使用 off() 删除事件,如下所示:

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

但这将删除绑定到此元素的所有单击事件。如果带有 SaveQuestion 的函数是唯一的事件绑定,则上述函数将执行此操作。如果没有,请执行以下操作:

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

答案 2

有没有办法删除已分配给按钮的所有先前单击事件?

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