使用事件侦听器添加多个元素的最快方法?正在听窗口点击不好?

时间:2011-09-06 09:11:08

标签: javascript performance events dom element

在我之前提出的问题之后,我发现了这个问题,这可能会更好。

我需要在页面上添加很多项目,我发现有时appendChild + fregment比innerHTML更快。无论如何,现在我需要知道添加元素和添加事件监听器的最快方法。

我看到的一种方法是监听窗口对象然后过滤。 优点:

  • 只添加一次,然后再添加
  • 如果在窗口对象上添加事件时忘记删除事件侦听器之前没有内存陷阱
  • 他人?

缺点:

  • 也许慢一点?
  • 因为我们需要过滤物品并且会随时听取所有事情而言较慢......此时可能太慢了,我不知道。

我知道的另一种方法是听取创建的元素。

但是对于innerHTML,我认为只适用于窗口对象监听器。

还有其他任何意见吗? 感谢

1 个答案:

答案 0 :(得分:2)

处理“多个”元素的“多个”事件处理程序的最佳做法是事件委托,这基本上就是你所描述的。

在最近的共享父级上创建一个监听器(document.body当然会为任何元素创建一个监听器,但是下面可能还有另一个父节点。)

性能不应该是那里的问题。创建200个事件处理函数而不是一个函数要糟糕得多。