Jquery中的bind,live,delegate,on的区别?

bind:
1.兼容性较好;
2.绑定事件到所有选中的元素上;
3.不能绑定事件到动态添加的元素上;
4.效率较低,尤其是嵌套关系较深的元素

$("li").bind("click", function (event) {  
    alert("hello");  
});  

live:
1.把所有的事件都绑定到jQuery对象$(document)上;
2.事件只绑定一次,不需要绑定到筛选出来的元素上;
3.可以绑定事件到动态添加的元素上;
4.不能使用stopPropagation来阻止事件的冒泡

$("li").live("click", function (event) {  
    alert("hello");  
});  

delegate:
1.将事件绑定到要添加事件元素的父元素身上,比live更加灵活;
2.绑定的父元素可以采用就近原则,比lve的效率高
3.也可以用在动态添加的元素上

$("#ul").delegate("li", "click", function (event) {  
    alert("hello");  
});  

On:
是jQuery1.7中新增的,前面的三种方法都是依赖on方法来实现的。,主要特点:
1.事件的添加和卸载都要是通过on来实现的,提供一种统一的事件处理方法。
2.增加了使用的难度,对于不熟悉on的使用的,很有可能误用,导致性能下降。

经验:on方法的正确使用
1.使用on方法,如果第二个参数使用null,则作用与bind( )相同;
2.如果第二个参数适用了选择器,就要看调用对象
i.如果调用对象是$(document),则作用与live( )相同
ii.否则与delegate()相同

    原文作者:sky丶星如雨
    原文地址: https://www.jianshu.com/p/fa87f071cb68
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞