blind()不能给创建的元素加事件,live()是通过事件委托加在document上所以不好,消耗性能,delegate()是通过事件委托加在给祖先元素上,on()方法的原理是什么,有什么优势?
首先建议题主去看下jq的源码。
live是新版jq废弃的功能,相当于delegate的document版。
bind和delegate...给你看一段jq的源码你就很清楚了(为简洁省略了部分代码):
jQuery.fn.extend({
bind: function( types, data, fn ) {
return this.on( types, null, data, fn );
},
delegate: function( selector, types, data, fn ) {
return this.on( types, selector, data, fn );
},
});
on是bind和delegate的底层实现,后两者是为了在特定场合简化代码或使代码可读性更强的快捷方式,或者说仅仅是为了保留历史兼容性而存在的东西。
而on的基本功能则最终通过jQuery.event.add来实现:
return this.each( function() {
jQuery.event.add( this, types, fn, data, selector );
});
还是建议题主读一下jq源码,不必通读,直接搜索你关注的关键字即可。这里不就jQuery.event.add做更多展开了。
实际上在常规用途上,你可以认为on和delegate的区别仅仅在于传参数方式不同而已,而bind则是一个进一步删除了冒泡绑定能力的版本。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。