在jQuery中使用BIND或ON函数的最佳实践

最近,jQuery团队开始建议使用on而不是bind来绑定事件到DOM。

我想知道它们之间是否存在差异,使用on函数有什么好处,以及在我的代码中将所有bind更改为on函数是否是一个很好的调用?

jQuery项目正在朝着更少的方法投入越来越多的function,而不是为每个单独的东西分别使用单独的方法。

方法bindlivedelegate都被单个方法替换,在这里你使用不同类型的参数来确定方法的作用。

比较:

 $(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元素上创建委托,您应该尝试将委托绑定到更近的范围。

如果你正在使用binddelegate它就不会立即替换它们。 您可以在新代码和您编辑的代码中执行此操作,但这些方法不会在最近的将来消失。

On从现在开始和将来附加一个事件处理程序。 绑定,但只在您设置时附加事件。 如果动态添加其他元素,则不会为这些元素触发绑定。

基本用例基本没有区别

  $( '#elementID' ).bind( 'click', function(){...} ); $( '#elementID' ).on( 'click', function(){...} ); 

这两个function相同..

.on()也进行事件委托,因此是首选。

添加.on()的想法是创建统一的事件API,而不是具有绑定事件的多个函数;

.on()替换.bind(),. live()和.delegate()。

从jquery 1.7开始.. .bind只是.on()的别名

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