本文主要讨论jQuery事件绑定与取消中的两个方面:一是绑定事件的命名方法,二是移除绑定事件的理解。

一、绑定事件的命名方法

jQuery中绑定事件的命名方法主要有两种,

一是直接把事件函数赋值给一个变量,格式为bind(type,name=func)。这种命名方法等同于:var name=func; bind(type,name)。

二是把事件函数赋值给事件类型的一个自定义属性,格式为bind(type.name,func)(type为事件类型,如click、submit等;前者name为变量名,后者name为事件类型的自定义属性名;func为函数,如function(){alert(“it’s me”)})。

这两种方法的作用都是为了把事件函数存储在一个变量或者属性中,方便其他事件调用或者移除该事件。

具体例子如下:

  //把事件函数赋值给一个变量a
  $("a").bind("click",a=function(){alert("click a")});
  //把事件函数赋值给事件click的一个自定义属性a
  $("a").bind("click.a",function(){alert("click a");});

二、移除绑定事件的理解

在绑定事件中,我们经常会遇到在某种情况下,需要对已经绑定的事件进行移除,特别是针对其中一个事件的移除。我们可以使用格式为unbind(type)来移除某一事件类型的所有绑定事件;另外可以利用上述的事件命名来针对某一事件进行移除,格式为unbind(type,name)或者unbind(type.name),这个方法只会移除掉name所存储的事件,对于事件类型所绑定的其他事件不会有干扰。在实际应用中,第二种方法比较常用。在使用第一种方法时,一定要注意,该方法可能会影响到事件类型后来绑定的事件。

具体例子如下:

//click的所有事件将被移除
$("a").bind("click.a",function(){alert("click a");});
$("a").bind("click",function(){alert("b");})
$("a").unbind("click");
//第一个click事件在第一次点击时有效,点击过后,所有的click事件都被移除
$("a").bind("click.a",function(){
    alert("click a");
    $("a").unbind("click");
});
$("a").bind("click",function(){alert("b")});
//只有click中的a事件会被移除
$("a").bind("click.a",function(){alert("click a");});
$("a").bind("click",function(){alert("b");})
$("a").unbind("click.a");
//click中的a事件会执行一次,然后再被移除;其他事件不受干扰
$("a").bind("click.a",function(){
    alert("click a");
    $("a").unbind("click.a");
});
$("a").bind("click",function(){alert("b")});
//click中的a事件会执行一次,然后再被移除;其他事件不受干扰
$("a").bind("click",a=function(){
    alert("click a");
    $("a").unbind("click",a);
});
$("a").bind("click",function(){alert("b")});