【发布时间】:2014-11-24 02:51:25
【问题描述】:
在我的页面上,用户单击一个元素以对其进行编辑。为此,我将editable 类分配给所有此类元素。
我应该如何监听所有这些元素的点击?目前,我正在这样做:
document.body.addEventListener("click", (event) => {
if (event.target.classList.contains("editable")) {
// do stuff
}
});
另一种方法是在每个元素上设置一个侦听器,如下所示:
const editables = document.getElementsByClassName("editable");
for (const editable of editables) {
editable.addEventListener("click", editElement);
}
在我看来,第一种方式在性能方面肯定更好,因为它只监听一个元素,但是否可以通过将所有此类事件附加到 body 元素来降低性能?是否还有其他我忽略的考虑因素(例如事件处理的浏览器实现)建议采用第二种方式?
【问题讨论】:
-
请注意,您的第一个 sn-p 不会捕获对可编辑项的子元素的任何点击,而第二个 sn-p 会。
标签: javascript event-handling event-bubbling