在JQuery中附加事件处理程序.直接绑定与委派



我制作了一个单页应用程序。当散列被更改时,新元素会通过ajax加载到页面中。

我想为新元素设置一个事件处理程序。有两种方法。

  1. 每个事件处理程序在启动时都被委派。

    $("body").on(event, "element", handler)

  2. 无论何时更改散列,事件处理程序都直接绑定到新元素。因此,绑定和删除处理程序是重复的。

    $("element").on(event, handler)

哪个表现更好?(查找元素时间与重复绑定删除时间)(对不起,我的英语不好…)

了解有关这个单页应用程序如何工作的更多信息可能会有所帮助,但也许您可以考虑以下指导原则

  • 您的页面动态程度如何?如果它是相当静态的(没有改变,这可能是一个过早的优化)
  • 这里涉及多少DOM元素?需要单独连接的DOM元素越多,必须做的工作就越多,内存消耗也就越多,等等
  • 您的DOM元素嵌套有多深?嵌套越深,意味着事件越多
  • 在按id查找元素的情况下,从jQuery的角度来看查找非常快,因为DOM元素id名称应该是唯一的,而且它通常只使用getElementById本机方法
  • 在通过标记查找元素的情况下,应该有一个body标记,但如果您选择的是div标记,则可能有几百个div标记
  • 当你仍然不确定时,是时候让Chrome开发工具参与进来,帮助你进一步微调和诊断你可能遇到的潜在性能问题了
  • jQuery的选择器引擎非常强大和灵活,但并非所有选择器都执行相同的操作。您可以编写一个粗糙的选择器,使浏览器不必要地负担过重

一般来说,当我需要一大群项目来对给定的事件执行类似操作时,我通常会使用事件委派。

我希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新