3
在我的Google Closure代码中,我想要为div中的每个跨度分配一个事件。如何使用单个事件节点将事件分配给多个子DOM元素?
HTML:
<div id="container">
<span>foo</span>
<span>bar</span>
<span>bacon is delicious</span>
</div>
封闭性JavaScript:
var container = goog.dom.getElement('container');
var spans = goog.dom.getChildren(container);
for (var i = 0; i < spans.length; i++) {
eventHandler.listen(
spans[i],
goog.events.EventType.CLICK,
function (e) {
doSomeStuff(e.target);
}
}
这个循环似乎效率不高,但因为它似乎一个事件节点分配给每一个span元素。我可以以某种方式将单个事件节点分配给包含div,并且在跨度上的点击事件冒泡到包含div时使回调函数运行?
在jQuery中,我相信live()
和delegate()
函数之间的区别与我在这里处理的问题是平行的。
谢谢,不会e.target返回包含div但? – dangerChihuahua007 2012-07-26 17:39:55
你测试了吗?如果Closure会改变目标的含义,我会感到非常惊讶:https://developer.mozilla.org/en/DOM/event.target – Prinzhorn 2012-07-26 17:58:58
e.target仅当您点击它时才会返回包含div,即不在孩子身上,但在孩子之间的空间。 – Prinzhorn 2012-07-26 18:00:12