jQuery中.bind() .live() .delegate() .on()的区别

来源:互联网 发布:网络监控代理 编辑:程序博客网 时间:2024/05/16 17:27

差别:http://www.sosonemo.me/bindlivedelegate%E8%BF%98%E6%98%AFon%EF%BC%9F-jquery%E4%BA%8B%E4%BB%B6%E7%BB%91%E5%AE%9A%E6%96%B9%E6%B3%95%E7%A0%94%E7%A9%B6.html

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

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

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

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


bind的作用是给具体的某个元素绑定事件,比如

给所有的button元素添加了点击事件处理方法。这似乎已经可以完成大部分的事件绑定任务了,然而有一个问题它无法解决–如果某一元素是新添加的怎么办?bind将事件处理函数绑定在了具体的元素上,而新添加的元素身上是没有被绑定处理函数的。也就是说,如果执行完上面的代码后再动态添加一个button元素,新添加的这个button元素是没有被绑定事件处理函数的。

于是,live出现了。对于刚开始接触jquery的人来说,live是一个很神奇的事件绑定方法,无论某一元素已经存在还是将来会被添加到页面中,live都能将事件绑定到它身上。



.delegate()方法将方法绑定到特定的元素而.live()绑定到document根元素。

$('#container').delegate('a', 'click', function() { alert("That tickles!") });jQuery遍历document检索出 $(‘#container’)元素并绑定alert方法同时将click事件和’a'选择符作为参数。当一个事件传递到 $(‘#container’)时,它检验事件类型是否为click并且目标元素同’a'选择符相符。如果通过检验则执行方法。


$('a').live('click', function() { alert("That tickles!") });jQuery在 $(document)元素上绑定alert方法,同时将‘click’和‘a’作为参数。当一个事件传递到document节点时,节点会检验事件类型是否为click同时检验事件的目标元素类型是否同选择符‘a’相匹配。如果检验通过那么执行alert方法。


on()方法
其实在最新版本的jQuery类库中,所有以上方法在后面其实都是调用on()方法,所以,如果你开发最新版本的jQuery,完全可以使用on()方法来处理所有的事件绑定,避免过多的方法调用

0 0
原创粉丝点击