如何删除Jquery中的所有Click事件处理程序

Cli*_*ote 115 javascript jquery click

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

$("#saveBtn").click(function () {
    saveQuestion(id);
});
Run Code Online (Sandbox Code Playgroud)

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

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

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

TSt*_*per 196

您可以使用off()来删除这样的事件:

$("#saveBtn").off("click");
Run Code Online (Sandbox Code Playgroud)

但这将删除绑定到此元素的所有单击事件.如果具有SaveQuestion的函数是唯一绑定的事件,则上述操作将执行此操作.如果不这样做:

$("#saveBtn").off("click").click(function() { saveQuestion(id); });
Run Code Online (Sandbox Code Playgroud)

  • 从jQuery 1.7开始,你应该使用on和off而不是bind和unbind (31认同)

Raf*_*ael 13

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

$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});
Run Code Online (Sandbox Code Playgroud)


Fo *_*Nko 7

$('#saveBtn').off('click').click(function(){saveQuestion(id)});
Run Code Online (Sandbox Code Playgroud)