【发布时间】:2014-01-01 08:30:15
【问题描述】:
我有以下代码:
var page = document.getElementById("contentWrapper");
page.addEventListener("click", function (e) {
var target, clickTarget, propagationFlag;
target = e.target || e.srcElement;
while (target !== page) {
clickTarget = target.getAttribute("data-clickTarget");
if (clickTarget) {
clickHandler[clickTarget](e);
propagationFlag = target.getAttribute("data-propagationFlag");
}
if (propagationFlag === "true") {
break;
}
target = target.parentNode;
}
});
我在整个项目(单页应用程序)中使用单个事件处理程序。事件处理程序使用属性“data-clickTarget”标识,并使用“data-propagationFlag”防止事件传播。
如果 DOM 树很大,我应该使用循环方法还是传统的事件处理程序?
【问题讨论】:
-
如果dom树很大,不要用jQ压下去。
-
@Dude 这是一个荒谬的说法。它对 OP 没有帮助。
-
您使用的是 jQuery,那么为什么要让编码如此复杂。使用
this关键字和.data()进行简化 -
@Tomalak 为什么?我提供的建议可以使 OP 和任何看到它的人受益,我应该停止吗?
-
@Dude 我认为该声明过于宽泛和简化。我缺少对该主张的一些证实/反思。
标签: javascript jquery event-handling dom-events event-delegation