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绑定的事件处理都移除,如果传入参数(多个用空格隔开),则可以移除多个。
如果一个绑定了多个事件处理,则可以传入相应的事件处理程序名来解除绑定。