bind(),live()都是调用on()函数,只不过传递的参数不同。
一、$(selector).bind(event,data,fn);
$('#J_btn').bind('click',function(){ //直接绑定在指定元素上 //只能针对已经存在的元素进行事件的设置 });
二、$(selector).live(event,data,fn);
$('#J_btn').live('click',function(){ //委托,绑定在父元素上,父元素只能是document //live可以实现动态绑定 //通过冒泡的方式来绑定到元素上 //支持未来新添加元素的事件设置 });
三、$(selector).delegate(childSelector,event,data,fn);
$("#J_btn").delegate("J_btn_left","click",function(){ //委托,绑定在父元素上,父元素可以是任意的祖先节点 //delegate可以实现动态绑定 //通过冒泡的方式来绑定到元素上 //支持未来新添加元素的事件设置 });
四、$(selector).on(event,childselector,data,fn);
$("#J_btn").on("click","J_btn_left",function(){ //支持未来新添加元素的事件设置 });
jQuery推出on()的目的有2个,一是为了统一接口,二是为了提高性能,所以从现在开始用on()替换bind(), live(), delegate()吧。尤其是不要再用live()了,因为它已经处于不推荐使用列表了,随时会被干掉。如果只绑定一次事件,那接着用one()吧,这个没有变化。bind()支持Jquery所有版本;live()支持jquery1.8-;delegate()支持jquery1.4.2+;on()支持jquery1.7+。
五、事件处理
1、单事件处理
$(selector).on("click",data,fn);
2、多事件处理
A、利用空格分割多事件
$(selector).on("click dbclick mouseout",childselector,data,fn);
B、利用大括号灵活定义多事件
$(selector).on({
event1:fn,
event2:fn,
...
});
C、链式绑定事件
$(selector) .on("click",childselector,data,fn) .on("dbclick",childselector,data,fn) .on("mouseout",childselector,data,fn);
unbind(),die()和undelegate()方法也合并成了off()方法。