Google Closureコードで、div内のすべてのスパンにイベントを割り当てたいと思います。
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);
}
}
ただし、このループは、すべての単一スパン要素にイベントノードを割り当てているように見えるため、非効率的です。どういうわけか、単一のイベントノードを包含divに割り当て、スパンのクリックイベントが包含divまでバブルしたときにコールバック関数を実行させることはできますか?
live()
jQueryでは、と関数の違いは、delegate()
ここで扱っている問題と類似していると思います。