您的位置:首页 > Web前端 > JQuery

jquery中bind,live,on,one,delegate的区分

2017-05-31 18:11 405 查看
1.bind()方法,将一个事件处理程序添加到每一个匹配元素的事件上,并返回jquery对象.

. 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绑定的事件处理都移除,如果传入参数(多个用空格隔开),则可以移除多个。

如果一个绑定了多个事件处理,则可以传入相应的事件处理程序名来解除绑定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: