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

6

我已经阅读了jQuery有关事件处理的文档,但我仍然不太明白该怎么做。

我的移动应用程序使用ajax加载内容,因此无法在文档的onLoad绑定事件。

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

选择on()、live()和delegate()之间对性能的影响是什么?

还有其他需要考虑的事情吗?

4个回答

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/


4

1

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

[the] .live()方法已被弃用。使用.on()来附加事件处理程序。使用旧版本的jQuery的用户应优先使用.delegate()。

参考:live() API 参考文档,网址:http://api.jquery.com/live/

因此,在jQuery 1.7之后,选择是在on()和delegate()之间进行;上面的建议似乎表明您应该优先使用.on()而不是delegate()。虽然我无法争辩为什么会这样。


那么你认为on()和delegate之间没有任何区别,除了on()被推荐使用? - user920041
1
老实说,不会有太多变化;只是感觉他们在整理jQuery,而.on().off()的概念似乎意味着.delegate()将来可能会被弃用,因为它看起来做的事情与.on()差不多。 - David Thomas

1
如果您正在为自己或自己的产品创建JavaScript应用程序,则应使用jQuery 1.7和.on()方法。
如果您正在开发某种插件,可以在旧版本上使用,则建议使用.delegate()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接