在我的頁面上,用戶單擊一個元素以編輯它。爲了促進這一點,我將類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