在我的页面上,用户单击一个元素以编辑它。为了促进这一点,我将类editable
分配给所有这些元素。添加事件监听器的最佳做法
我应该如何倾听所有这些元素的点击?目前,我这样做:
$lib.addEventListener(document.body, "click", function(event) {
if($lib.hasClass(event.target, "editable") {
// do stuff
}
});
其中$lib
是我使用的一个小型的JS库。
另一种方法是设置一个听者的每一个元素上,像这样:
var editables = document.getElementsByClassName("editable");
for(var i = 0; i < editables.length; i++) {
$lib.addEventListener(editables[i], "click", editElement);
}
这在我看来,第一种方式必须是获得更好的性能,因为它是唯一一个正在监听的元素,但是否可以通过将所有这些事件附加到body元素来降低性能?有没有其他的考虑(例如事件处理的浏览器实现),我忽略了哪些建议做第二种方式?
请注意,您的第一个片段不会捕获任何对您的可编辑元素的子元素的点击,而第二个片段会执行此操作。 – Bergi 2014-09-29 16:32:39