是否有可能从具有多个处理程序的事件中删除一个特定的事件处理程序?
当我search我现在遇到的问题的解决scheme时,我发现这个线程: jQuery:同一事件的多个处理程序 。 现在我想知道是否可以删除这些处理程序中的一个?
如果你不使用匿名callback是可能的:
var $elt = $(...); function clickHandler1(event){...} function clickHandler2(event){...} // bind both $elt.click(clickHandler1); $elt.click(clickHandler2); // unbind just the first $elt.unbind('click', clickHandler1);
出现一个狂野的演示!
另请参阅: .unbind()
文档 。
其实,你可以通过事件namespacing使用匿名callback来实现:
$elt.bind('click.handler1', function(event) { alert('click handler 1'); }); $elt.unbind('click.handler1');
在这里看到修改的演示
在这里获取更多信息。
这是在jQuery 1.4.3中添加的,实际上在问题被提出之前超过4个月。