3

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()ここで扱っている問題と類似していると思います。

4

1 に答える 1