为了账号安全,请及时绑定邮箱和手机立即绑定

jquery on()方法的实现原理和优势?

jquery on()方法的实现原理和优势?

蛊毒传说 2019-04-09 20:25:15
blind()不能给创建的元素加事件,live()是通过事件委托加在document上所以不好,消耗性能,delegate()是通过事件委托加在给祖先元素上,on()方法的原理是什么,有什么优势?
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

首先建议题主去看下jq的源码。
live是新版jq废弃的功能,相当于delegate的document版。
bind和delegate...给你看一段jq的源码你就很清楚了(为简洁省略了部分代码):
jQuery.fn.extend({
bind:function(types,data,fn){
returnthis.on(types,null,data,fn);
},
delegate:function(selector,types,data,fn){
returnthis.on(types,selector,data,fn);
},
});
on是bind和delegate的底层实现,后两者是为了在特定场合简化代码或使代码可读性更强的快捷方式,或者说仅仅是为了保留历史兼容性而存在的东西。
而on的基本功能则最终通过jQuery.event.add来实现:
returnthis.each(function(){
jQuery.event.add(this,types,fn,data,selector);
});
还是建议题主读一下jq源码,不必通读,直接搜索你关注的关键字即可。这里不就jQuery.event.add做更多展开了。
实际上在常规用途上,你可以认为on和delegate的区别仅仅在于传参数方式不同而已,而bind则是一个进一步删除了冒泡绑定能力的版本。
(注:点击内文链接查看api文档)
                            
查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 760 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信