jquery中bind,live,on,one,delegate的区分
2017-05-31 18:11
405 查看
1.bind()方法,将一个事件处理程序添加到每一个匹配元素的事件上,并返回jquery对象.
简单的给固定的元素绑定事件时,可以使用该方法。动态添加执行事件元素的情况下,bind方法不适用
2.Live()方法 将事件处理程序附加到每一个匹配元素(包含当前存在及以后动态创建的)的eventType事件上
原因:
3.one()方法:将事件处理程序附加到匹配元素的事件上,返回jquery对象。但事件处理程序最多只执行一次,然后解除绑定
4.Delegate()方法:该方法可以基于某些特定元素(通过选择器得到),附加一个或多个事件到特定元素内部选择器指定的元素上,无论选择出的目标元素是当前存在还是将来创建。
在JQuery1.7之后delegate已经被on取代,在1.4-1.7之间,delegate任然是最有效的给元素绑定事件的方式。
5.on()方法(推荐使用),可以为当前存在或以后动态创建的匹配元素的事件添加事件处理
(1)事件绑定
多个事件绑定同一个事件处理程序,事件类型用空格隔开
多个事件绑定不同事件处理(以键值对形式)
绑定自定义事件
传递数据到函数
(2)事件委托
利用事件冒泡,我们可以直接在一个元素(比如document)上绑定一个事件处理函数来处理该元素所有子孙元素的该事件,当然,这里一般会在处理函数里判断event.target,根据触发事件的目标对象不同进行不同的操作。这一过程就叫事件委托。
6.通过on()绑定的事件处理程序一般用off()解除绑定
$(‘elem’).off()不传入参数,则elem节点上所有通过on绑定的事件处理都移除,如果传入参数(多个用空格隔开),则可以移除多个。
如果一个绑定了多个事件处理,则可以传入相应的事件处理程序名来解除绑定。
. bind(eventType,[,eventData],handler(eventObject)) .bind(eventType[,eventData][,preventBubble]) .bind(events) Events,object,使用json的形式,为当前元素定义多个事件
简单的给固定的元素绑定事件时,可以使用该方法。动态添加执行事件元素的情况下,bind方法不适用
2.Live()方法 将事件处理程序附加到每一个匹配元素(包含当前存在及以后动态创建的)的eventType事件上
该方法已经在Jquery 1.7不推荐使用,1.9中删除。
原因:
1,live方法执行需要先通过选择器选择元素,而在大文档中,会耗费大量时间在选择特定元素的操作上。 2.live()方法不支持链式使用 3,由于所有的live()事件都附着到document对象上,事件会在执行前通过最远、最慢的传播路径。 4,移动设备上click时间不会产生冒泡,所以live()方法不会起作用,因为通过冒泡机制实现的。
3.one()方法:将事件处理程序附加到匹配元素的事件上,返回jquery对象。但事件处理程序最多只执行一次,然后解除绑定
4.Delegate()方法:该方法可以基于某些特定元素(通过选择器得到),附加一个或多个事件到特定元素内部选择器指定的元素上,无论选择出的目标元素是当前存在还是将来创建。
.delegate(selector ,eventType [,eventData], handler(eventObject))
在JQuery1.7之后delegate已经被on取代,在1.4-1.7之间,delegate任然是最有效的给元素绑定事件的方式。
5.on()方法(推荐使用),可以为当前存在或以后动态创建的匹配元素的事件添加事件处理
(1)事件绑定
$("#elem").on('click',function(){})
多个事件绑定同一个事件处理程序,事件类型用空格隔开
$("#elem").on('mouseover mouseout',function(){})
多个事件绑定不同事件处理(以键值对形式)
$("#elem").on({ mouseover:function(){}, mouseout:function(){} });
绑定自定义事件
$("p").on("myOwnEvent", function(){});
传递数据到函数
$("p").on("click", {msg: "You just clicked me!"}, handlerName)
(2)事件委托
利用事件冒泡,我们可以直接在一个元素(比如document)上绑定一个事件处理函数来处理该元素所有子孙元素的该事件,当然,这里一般会在处理函数里判断event.target,根据触发事件的目标对象不同进行不同的操作。这一过程就叫事件委托。
6.通过on()绑定的事件处理程序一般用off()解除绑定
$(‘elem’).off()不传入参数,则elem节点上所有通过on绑定的事件处理都移除,如果传入参数(多个用空格隔开),则可以移除多个。
如果一个绑定了多个事件处理,则可以传入相应的事件处理程序名来解除绑定。
相关文章推荐
- Jquery揭秘系列:谈谈bind,one,live,delegate,on事件及实现
- JQuery中事件one、bind、unbind、live、delegate、on、off、trigger、triggerHandler的各种使用区别
- jQuery事件绑定on、off 和one,取代bind, live, delegate
- 浅谈jQuery代码优化之事件委托(事件绑定)——bind()|live()|delegate()|on()|off()|one()方法
- ☀【jQuery事件绑定】one / bind / live / delegate / on
- jquery的on、off、one、bind、delegate、live、die绑定事件方法研究
- jQuery源码分析之从on方法看bind,delegate,live,one方法一问
- jquery中.bind(),.live(),.delegate(),.on().one()的参数及版本
- jQuery中bind,live,delegate与one方法的用法及区别解析
- jQuery中.bind() .live() .delegate() .on()的区别
- jQuery四种事件绑定方式.bind(),.live(),.delegate(),on()的区别
- JQuery中的bind、delegate、on、live方法的区别及简单介绍
- jQuery中.bind() .live() .delegate() .on()的区别
- jQuery中.bind() .live() .delegate() .on()的区别
- jquery中bind,live,delegate和on的区别
- jQuery中.bind() .live() .delegate() .on()的区别
- jQuery中bind,live,delegate与one方法的用法及区别解析
- jQuery中的事件绑定函数.bind()、.live()、on()和.delegate()
- JQuery中的bind、delegate、on、live方法的区别及简单介绍
- jQuery中.bind() .live() .delegate() .on()的区别