本文主要讨论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")});