2013-08-01 29 views
4

我制作了一个单页面应用程序。 当一个散列被改变时,新的元素通过ajax加载到一个页面中。在JQuery中附加一个事件处理程序。直接绑定与授权

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

  1. 每个事件处理程序都在开始时被委托。

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

  2. 每当一个哈希改变时,事件handeler是直接绑定到新元素。 因此,重复绑定和删除处理程序。

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

执行好? (寻找元素时间与重复绑定去除时间) (对不起,我的英语很差......)

+0

使用动态委托来做它的唯一原因是更快,这是因为要构造一个较少的对象,假设在这两个函数中使用'var $ this = $(this);'。 – Ohgodwhy

回答

0

这可能有助于对如何此单页应用程序的工作,但也许你可以考虑这些详细信息准则

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

一般来说,我通常利用事件委托,当我需要一大批项目对于一个给定的事件行为相似。

我希望这是有帮助的。

相关问题