我是尚丹丹,我的博客建好啦!欢迎大家光临!

jquery事件 on(),bind(),live()的区别

jquery sdd 674℃ 0评论

bind(),给匹配的元素绑定一个或者多个事件处理程序,不能为未来的元素绑定事件,(比如由脚本创建的新元素)。

live(), 给匹配的元素绑定一个或者多个事件处理程序,可以为未来的元素绑定事件,(比如由脚本创建的新元素),性能较差

one(), 给匹配的元素绑定一个或者多个事件处理程序,所绑定的事件,执行一次后自动取消绑定,也就是只能执行一次。

.delegate()则是更精确的小范围使用事件代理,性能优于.live()

.on()则是最新的1.9版本整合了之前的三种方式的新事件绑定机制。1.9版本之前的不支持。

 

差别:

.bind()是直接绑定在元素上

.live()则是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。和.bind()的优势是支持动态数据。

.delegate()则是更精确的小范围使用事件代理,性能优于.live()

.on()则是最新的1.9版本整合了之前的三种方式的新事件绑定机制

bind是在dom树加载后,对元素的绑定,属于后期绑定。
one是在dom树加载后,对元素的绑定,和bind一样属于后期绑定,但是会在事件执行之后移除元素的绑定事件,事件只执行一次。
live 是先把事件绑定在document对象上面,通过事件冒泡,判断当前处于目标状态的元素是不是预绑定的那个元素对象,然后执行事件,属于前期绑定,元素可以是已存在的,也可以是动态添加的。
delegate绑定的元素可以是已经存在的,也可以是动态添加的。如果是已经存在的就会选定一个父元素,通过冒泡来触发指定子元素的事件。如果是动态添加的,就以document为父元素来触发冒泡事件。
(注:这里所说的后期绑定指的是元素已经加载后,进行事件的绑定。前期绑定指的是元素尚未存在,为动态元素添加事件)
这几种方法推荐使用bind和delegate,因为live是绑定事件在document上面,然后通过冒泡查询元素执行事件,很耗性能。

http://blog.csdn.net/panfang/article/details/21705681

http://www.cnblogs.com/a546558309/p/3658707.html

转载请注明:尚丹丹的博客 » jquery事件 on(),bind(),live()的区别

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址