如何删除Jquery中的所有Click事件处理程序
-
05-07-2019 - |
题
我遇到了问题。基本上,当用户单击页面上的“编辑”链接时,将运行以下Jquery代码:
$("#saveBtn").click(function () {
saveQuestion(id);
});
通过执行此操作,保存按钮的onClick事件调用 saveQuestion()
方法,并传递单击“编辑”链接的问题的ID。
但是如果在同一个会话中用户点击2个问题的编辑,那么它不会覆盖之前的 click
事件处理程序,而是会导致2个事件处理程序运行,其中一个可能会调用 saveQuestion(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);
});
...然后以后更容易解开。
不隶属于 StackOverflow