最近 jQuery 团队开始推荐使用on
而不是bind
for 将事件绑定到 DOM。
我想知道它们之间是否有区别,使用该函数有什么好处,以及在我的代码中将所有 my 's 函数更改为's 函数on
是否是一个很好的调用?bind
on
最近 jQuery 团队开始推荐使用on
而不是bind
for 将事件绑定到 DOM。
我想知道它们之间是否有区别,使用该函数有什么好处,以及在我的代码中将所有 my 's 函数更改为's 函数on
是否是一个很好的调用?bind
on
jQuery 项目正朝着将越来越多的功能放在更少的方法中,而不是为每个单独的事物使用单独的方法。
方法bind
和都已被单个方法所取代live
,您可以在其中使用不同类型的参数来确定该方法的作用。delegate
on
比较:
$(sel).bind(event, f); = $(sel).on(event, f);
$(sel).live(event, f); = $(document.body).on(event, sel, f);
$(sel).delegate(sel2, event, f) = $(sel).on(event, sel2, f);
如果您正在使用live
,则应该替换它,因为该方法的使用有点尴尬。此外,该live
方法在 body 元素上创建了一个委托,您应该尝试将委托绑定到更近的范围。
如果您正在使用bind
并且delegate
立即更换它们并不恐慌on
。您可以在新代码中以及在您编辑的代码中执行此操作,但这些方法不会在不久的将来消失。
基本用例基本没有区别
$( '#elementID' ).bind( 'click', function(){...} );
$( '#elementID' ).on( 'click', function(){...} );
这两个功能相同..
.on()
也做事件委托,因此是首选。
添加 .on() 的想法是创建一个统一的事件 API,而不是有多个函数来绑定事件;
.on() 替换 .bind()、.live() 和 .delegate()。
并且截至 jquery 1.7 ...bind
只是一个别名.on()
On 从现在和将来附加一个事件处理程序。绑定,但是仅在您设置事件时附加该事件。如果动态添加其他元素,则不会为这些元素触发 bind。
bind
只是可能会被删除的简写。来自 jQuery 的源代码:
...
bind: function( types, data, fn ) {
return this.on( types, null, data, fn );
},
...
您可以自己查看源代码的介绍,以了解有关 jQuery 工作原理的很多信息。
不同的是,bind
绑定事件,on
也可以绑定事件,但也可以管理事件委托。
http://api.jquery.com/on/#direct-and-delegated-events
如果您想更详细地检查这一点,请查看此博客文章:http ://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html