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

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则是一个进一步删除了冒泡绑定能力的版本。

(注:点击内文链接查看api文档)

如果你使用jQuery比较新的版本,推荐使用.on取代以前所有的其它时间方法,因为底层的实现都是调用了.on方法,推荐看看这个文章:http://www.gbin1.com/technology/jquery/20120419jqueryeventhandler/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值