jQuery:bind方法的使用详解
jQuery:bind方法的使用详解[*]传入两个参数:第一个参数是事件名称,第二个参数是事件处理函数。例如:$(‘p’).click(f)等价于:
[*]$('p').bind('click',f);
[*]传入三个参数:第一个参数仍旧是事件名称,第二个参数可以是任意值,jQuery会在执行处理函数之前,将该值设置为Event的data属性。通过这种方式传递额外数据给处理程序,不需要使用闭包。注意:当对一个事件绑定了多个处理函数的时候,在处理函数中,event的data属性只拥有绑定这个处理函数时传入的值。如下解释会更清楚一些:
[*]例1:
$('p').bind('click',2,function(event){
console.log(event.data);
});
例2:
$('p').bind('click',{'name':'sunny'},function(event){
console.log(event.data);
});例1会输出2,例2会输出{name:’sunny’},两者的data属性值不会受影响。
[*]bind方法可以通过空格的给多个事件注册一个处理函数。例如:
[*]$('a').bind('mouseenter mouseleave',f);
相当于
$('a').hover(f);
[*]bind方法可以通过传入对象的方式,给多个事件绑定处理函数。例如:
[*]$('a').bind({click:f,mouseenter:g);
[*]bind方法可以为注册的事件处理函数指定命名空间,这在解绑某个事件的处理函数的时候不用解绑所有的处理函数,而可以单独解绑某个命名空间下的处理函数。注意:这个命名空间并不是js中模块分类的命名空间的意思,你可以指定任意字符来充当命名空间,格式是:事件名称+.+命名空间名称。例如:
[*]click.myspace
示例代码如下:
$('a').bind('click.myspace',function(){
//处理程序
})
如果没有命名空间,在解绑的时候,只能执行以下代码全部解绑:
$('a').unbind('click');
但是如果使用了命名空间,可以只解绑指定命名空间的处理函数:
$('a').unbind('click.myspace');当然,也可以一次性解绑一个命名空间的所有处理函数。例如:
$('a').unbind('myspace');
这将解绑myspace在a上的所有处理函数
文档来源:51CTO技术博客https://blog.51cto.com/u_6220803/3199018
页:
[1]