Google closure 如何使用单个事件节点将事件分配给多个子DOM元素?
在我的Google闭包代码中,我想为div中的每个跨度分配一个事件 HTML:Google closure 如何使用单个事件节点将事件分配给多个子DOM元素?,google-closure,google-closure-library,Google Closure,Google Closure Library,在我的Google闭包代码中,我想为div中的每个跨度分配一个事件 HTML: 福 酒吧 培根很好吃 闭包Javascript: var container = goog.dom.getElement('container'); var spans = goog.dom.getChildren(container); for (var i = 0; i < spans.length; i++) { eventHandler.listen( spans
福
酒吧
培根很好吃
闭包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);
}
}
var container=goog.dom.getElement('container');
var span=goog.dom.getChildren(容器);
对于(变量i=0;i
尽管如此,此循环似乎效率低下,因为它似乎为每个span元素分配了一个事件节点。当span上的单击事件冒泡到包含的div时,我是否可以为包含的div分配一个事件节点并运行回调函数
在jQuery中,我相信
live()
和delegate()之间的区别
函数与我在这里处理的问题类似。我从未使用过Google Close,但您已经在使用e.target
。只需向容器添加一个侦听器,您就可以使用e.target
获得实际单击的元素
var container = goog.dom.getElement('container');
eventHandler.listen(
container,
goog.events.EventType.CLICK,
function (e) {
doSomeStuff(e.target);
});
谢谢,e.target不会返回包含的div吗?您测试过吗?如果闭包会改变target的含义,我会非常惊讶:e.target只有在您单击它时才会返回包含的div,即不是在子对象上,而是在子对象之间的空格上。
var container = goog.dom.getElement('container');
eventHandler.listen(
container,
goog.events.EventType.CLICK,
function (e) {
doSomeStuff(e.target);
});