在我上一个问题之后,我提出了这个问题,这可能会更好。
我需要在页面上添加很多项目,我看到有时 appendChild+fregment 比 innerHTML 更快。无论如何,现在我需要知道添加元素和添加事件监听器的最快方法。
我看到的一种方法是监听窗口对象,然后进行过滤。 优点:
- 只加一次,以后不加
- 如果在窗口对象上添加事件时忘记在删除之前删除事件监听器,则不会出现内存陷阱
- 其他人?
缺点:
- 也许慢一些?
- 速度较慢,因为我们需要过滤项目,并且会随时监听所有内容...在这一点上可能太慢了,我不知道。
我知道的另一种方法是监听创建的元素。
但是对于 innerHTML,我认为只适用于窗口对象监听器。
还有其他意见吗? 谢谢
最佳答案
为“许多”元素处理“多个”事件处理程序的最佳做法是事件委托(delegate),这基本上就是您所描述的。
在最近的共享父节点上创建一个监听器(document.body
当然会为任何元素执行此操作,但可能在其下方有另一个父节点)。
性能不应该是那里的问题。创建 200 个事件处理程序函数而不是一个要糟糕得多。
关于javascript - 使用事件监听器添加多个元素的最快方法?监听点击窗口不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7317497/