如何删除Jquery中的所有Click事件处理程序
我有一个问题。 基本上,当用户点击页面上的“编辑”链接时,以下Jquery代码将运行:
$("#saveBtn").click(function () { saveQuestion(id); });
通过这样做,savebutton的onClick事件调用saveQuestion()
方法并传递点击了“编辑”链接的问题的ID。
但是如果在同一个会话中用户点击了两个问题的编辑,而不是覆盖以前的click
事件处理程序,而是导致两个事件处理程序运行,一个可能调用saveQuestion(1)
,另一个可能调用saveQuestion(2)
。 通过这样做1个问题覆盖另一个问题。
有没有办法删除所有已经分配给button的click
事件?
你可以使用off()来移除一个像这样的事件:
$("#saveBtn").off("click");
但是这将删除所有绑定到这个元素的点击事件 。 如果带有SaveQuestion的函数是唯一绑定的事件,那么上面就会这样做。 如果不这样做:
$("#saveBtn").off("click").click(function() { saveQuestion(id); });
有没有办法删除所有已经分配给button的点击事件?
$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});
$('#saveBtn').off('click').click(function(){saveQuestion(id)});
如果你使用…
$(function(){ function myFunc() { // ... do something ... }; $('#saveBtn').click(myFunc); });
…以后再解绑更容易
$('#saveBtn').off('click').on('click',function(){ saveQuestion(id) });
使用jQuery的closures