在jQuery中,我应该选择live(),delegate()还是on()?

时间:2011-11-19 19:40:01

标签: javascript jquery events event-handling

我已经阅读了关于事件处理的jQuery文档,但我仍然无法理解我应该做什么。

我有一个移动应用程序,其中内容加载了ajax,因此事件无法绑定到文档onLoad上。

随着我的应用程序的增长,我现在开始担心错误的事件处理会给性能带来问题。

对on(),live()和delegate()之间的性能选择有何影响?

还需要考虑其他因素吗?

4 个答案:

答案 0 :(得分:6)

从jQuery 1.7开始,绑定事件的官方(且性能最佳)方式是.on.off。与基于id的选择器结合使用时速度最快:

$('#id').on('click', myHandler);

.on取代.live .delegate.bind,有关详细信息,请参阅此处:

http://blog.jquery.com/2011/11/03/jquery-1-7-released/

答案 1 :(得分:4)

从jQuery 1.7开始,建议所有新代码使用on()off()进行所有事件处理。

http://blog.jquery.com/2011/11/03/jquery-1-7-released/

答案 2 :(得分:1)

从jQuery 1.7开始,jQuery团队/ API建议:

  

[。]不推荐使用.live()方法。使用.on()附加事件处理程序。旧版jQuery的用户应该使用.delegate()而不是.live()。

参考:live() API reference, at: http://api.jquery.com/live/

因此,jQuery 1.7之后的选择介于on()delegate()之间;以上建议似乎建议您优先使用.on() delegate()。虽然我不能争论为什么

答案 3 :(得分:1)

如果您要为自己或自己的产品创建javascript应用程序,则应使用jQuery 1.7和.on()方法。

如果你正在做一些可以在旧版本上使用的插件,我会使用.delegate()