@H_5020@<span style="background-color: #ccffcc">前言
@H
502_0@因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到dom元素的绑定事件方式,简单的归纳一下bind,live,delegate,on的区别,以便以后查阅,也希望该
文章日后能帮助到朋友,如有不妥之处,希望指出、交流。
@H_
502_0@
一.bind()
@H_
502_0@
简要描述
@H_
502_0@bind()向匹配元素
添加一个或多个事件处理器。
@H_
502_0@
使用方式
@H_
502_0@$(selector).bind(event,data,function)
@H_
502_0@event:必需项;
添加到元素的一个或多个事件,例如 click,dblclick等;
@H_
502_0@单事件处理:例如 $(selector).bind("click",function);
@H_
502_0@多事件处理:1.利用空格分隔多事件,例如 $(selector).bind("click dbclick mou
SEOut",function);
@H_
502_0@2.利用大括号灵活定义多事件,例如 $(selector).bind({event1:function,event2:function,...})
@H_
502_0@3.空格相隔方式:绑定较为死板,不能给事件单独绑定
函数,适合处理多个事件
调用同一
函数情况;
@H_
502_0@大括号替代方式:绑定较为灵活,可以给事件单独绑定
函数;
@H_
502_0@data:可选;需要传递的参数;
@H_
502_0@function:必需;当绑定事件发生时,需要执行的
函数;
@H_
502_0@
适用Jquery版本
@H_
502_0@适用所有版本,但是根据官网解释,自从jquery1.7版本以后bind()
函数推荐用on()来代替。
@H_
502_0@
二.Live()
@H_
502_0@
简要描述
@H_
502_0@live() 向当前或未来的匹配元素
添加一个或多个事件处理器;
@H_
502_0@
使用方式
@H_
502_0@$(selector).live(event,dblclick等;
@H_
502_0@单事件处理:例如 $(selector).live("click",function);
@H_
502_0@多事件处理:1.利用空格分隔多事件,例如 $(selector).live("click dbclick mou
SEOut",function);
@H_
502_0@2.利用大括号灵活定义多事件,例如 $(selector).live({event1:function,适合处理多个事件
调用同一
函数情况;
@H_
502_0@大括号替代方式:绑定较为灵活,可以给事件单独绑定
函数;
@H_
502_0@data:可选;需要传递的参数;
@H_
502_0@function:必需;当绑定事件发生时,需要执行的
函数;
@H_
502_0@
适用Jquery版本
@H_
502_0@jquery1.9版本以下
支持,jquery1.9及其以上版本
删除了此
方法,jquery1.9以上版本用on()
方法来代替。
@H_
502_0@
三.delegate()
@H_
502_0@
简要描述
@H_
502_0@delegate() 为指定的元素(被选元素的子元素)
添加一个或多个事件处理程序,并规定当这些事件发生时运行的
函数。使用 delegate()
方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
@H_
502_0@
使用方式
@H_
502_0@$(selector).delegate(childSelector,event,function)
@H_
502_0@childSelector: 必需项;需要
添加事件处理程序的元素,一般为selector的子元素;
@H_
502_0@event:必需项;
添加到元素的一个或多个事件,例如 click,dblclick等;
@H_
502_0@单事件处理:例如 $(selector).delegate(childselector,"click",function);
@H_
502_0@多事件处理:1.利用空格分隔多事件,例如 $(selector).delegate(childselector,"click dbclick mou
SEOut",function);
@H_
502_0@2.利用大括号灵活定义多事件,例如 $(selector).delegate(childselector,{event1:function,适合处理多个事件
调用同一
函数情况;
@H_
502_0@大括号替代方式:绑定较为灵活,可以给事件单独绑定
函数;
@H_
502_0@data:可选;需要传递的参数;
@H_
502_0@function:必需;当绑定事件发生时,需要执行的
函数;
@H_
502_0@
适用Jquery版本
@H_
502_0@jquery1.4.2及其以上版本;
@H_
502_0@
四.on()
@H_
502_0@
简要描述
@H_
502_0@on() 为指定的元素,
添加一个或多个事件处理程序,并规定当这些事件发生时运行的
函数。使用 on()
方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
@H_
502_0@
使用方式
@H_
502_0@$(selector).on(event,childselector,dblclick等;
@H_
502_0@单事件处理:例如 $(selector).on("click",function);
@H_
502_0@多事件处理:1.利用空格分隔多事件,例如 $(selector).on("click dbclick mou
SEOut",childseletor,function);
@H_
502_0@2.利用大括号灵活定义多事件,例如 $(selector).on({event1:function,...},childselector);
@H_
502_0@3.空格相隔方式:绑定较为死板,不能给事件单独绑定
函数,适合处理多个事件
调用同一
函数情况;
@H_
502_0@大括号替代方式:绑定较为灵活,可以给事件单独绑定
函数;
@H_
502_0@childSelector: 可选;需要
添加事件处理程序的元素,一般为selector的子元素;
@H_
502_0@data:可选;需要传递的参数;
@H_
502_0@function:必需;当绑定事件发生时,需要执行的
函数;
@H_
502_0@
适用Jquery版本
@H_
502_0@jquery1.7及其以上版本;jquery1.7版本出现之后用于替代bind(),live()绑定事件方式;
@H_
502_0@
五.四种方式的异同和优缺点
@H_
502_0@相同点:
@H_
502_0@1.都
支持单元素多事件的绑定;空格相隔方式或者大括号替代方式;
@H_
502_0@2.均是通过事件冒泡方式,将事件传递到document进行事件的响应;
@H_
502_0@
六.比较和联系:
@H_
502_0@1.bind()
函数只能针对已经存在的元素进行事件的设置;但是live(),on(),delegate()均
支持未来新
添加元素的事件设置;
@H_
502_0@2.bind()
函数在jquery1.7版本以前比较受推崇,1.7版本出来之后,官方已经不推荐用bind(),替代
函数为on(),这也是1.7版本新
添加的
函数,同样,可以
@H_
502_0@用来代替live()
函数,live()
函数在1.9版本已经
删除;
@H_
502_0@3.live()
函数和delegate()
函数两者类似,但是live()
函数在执行速度,灵活性和CSS选择器
支持方面较delegate().
@H_
502_0@4.bind()
支持Jquery所有版本;live()
支持jquery1.8-;delegate()
支持jquery1.4.2+;on()
支持jquery1.7+;
@H_
502_0@
七.总结
@H_
502_0@如果项目中引用jquery版本为低版本,推荐用delegate(),高版本jquery可以使用on()来代替,以上仅为个人看法,如有不同想法,欢迎交流。
@H_
502_0@以上就是小编为大家带来的关于Jquery中的事件绑定总结全部
内容了,希望大家多多
支持编程之家~