A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

JQuery的事件委托on、live、delegate之间有什么区别


  • live

定义和用法:主要用于给选择到的元素上绑定特定事件类型的监听函数;
语法:live(type, [data], fn);
特点:

    • live方法并没有将监听器绑定到自己(this)身上,而是绑定到了this.context上了。
    • live正是利用了事件委托机制来完成事件的监听处理,把节点的处理委托给了document,新添加的元素不必再绑定一次监听器。
    • 使用live()方法但却只能放在直接选择的元素后面,不能在层级比较深,连缀的DOM遍历方法后面使用,即("ul").live...可以,但("ul").live...可以,但("body").find("ul").live…不行;


  • delegate

定义和用法:将监听事件绑定在就近的父级元素上;
语法:delegate(selector,type,[data],fn)
特点:

    • 选择就近的父级元素,因为事件可以更快的冒泡上去,能够在第一时间进行处理。
    • 更精确的小范围使用事件代理,性能优于.live()。可以用在动态添加的元素上。


  • on

定义和用法:将监听事件绑定到指定元素上。
语法:on(type,[selector],[data],fn)
参数的位置写法与delegate不一样。
说明:on方法是当前JQuery推荐使用的事件绑定方法,附加只运行一次就删除函数的方法是one()。

  • 它们三个之间的区别:

live 把事件委托交给了document(根节点),document 向下去寻找符合条件的元素, 不用等待document加载结束也可以生效。

delegate可指定事件委托对象,相比于live性能更优,直接锁定指定选择器;

on事件委托对象选填,如果不填,即给对象自身注册事件,填了作用和delegate一致。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马