【发布时间】:2011-08-11 17:37:08
【问题描述】:
我的团队正在使用 jQuery Mobile 构建一个移动网站,随着我们接近发布日期,性能变得越来越受关注。我所做的一项观察是,在我们的代码中我们有很多对live() 和delegate() 的调用;但事实上,据我所知,我们只是曾经使用这些方法将事件处理程序附加到已经存在的 DOM 节点(并且 将始终存在,在我们的上下文中应用程序)。
鉴于 live() 和 delegate() 都旨在为可能在 DOM 中稍后出现的节点提供动态绑定,并且考虑到每个都涉及处理已冒泡的事件一直到document 根节点,我想知道我们是否可以通过将这些调用(在适当的情况下)改为bind() 来提高性能。
我知道我自己可能会以某种方式对此进行测试,但我没有大量使用 JavaScript 进行性能测试的经验,而且我认为我可能需要更长的时间才能弄清楚我会简单地问社区。有没有人测试过这个?有可测量的差异吗?或者将这些live() 和delegate() 调用切换到bind() 会浪费时间吗?
【问题讨论】:
-
如您所知,事件可以冒泡。 live() 方法不关心节点是后来出现在 DOM 中还是从一开始就在那里,它只是附加一个侦听器来执行“文档”全局变量并侦听某个事件是否来自适当的对象并触发如果有的话。至于你的问题:“我们应该忘记小的效率,比如说大约 97% 的时间:过早的优化是万恶之源”。
-
@Mironor:是的,过早优化。
标签: jquery performance events jquery-mobile