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