解除事件绑定

给一个元素绑定事件后,再解除绑定,是一个比较常见的操作。

对于有名字的函数,这个操作在jQuery里很简单:

function doAlert(){
  alert("fire!");
}
var doc = $(document);
doc.on("click",doAlert);
doc.off("click",doAlert);

点击查看Demo
但是,对于匿名函数,怎么解绑呢?

jQuery中的事件命名空间

在jQuery1.4.3中就给事件添加了命名空间http://api.jquery.com/event.namespace/,例如:

var doc = $(document);
doc.on("click.doAlert",function(){
  alert("fire!");
});

doc.off("click.doAlert"); //通过命名空间解绑匿名函数

上面的代码中,给document添加了click事件,并且给click加了一个命名空间,同时绑定的函数又是一个匿名函数,这个时候,就可以使用这个doAlert对把这个匿名函数解绑,在线Demo