6

想象一下,您想收听对页面上任何锚元素所做的所有点击。页面上的锚点可以在页面生命周期内动态添加/删除,您想要注册所有点击事件,即使是新添加的。

有什么方法可以使用标准库在 Dart 中附加委托事件(如在 jQuery 中)?

在 jQuery 中,您可以使用element.on('click', '.selector', handler);.

4

2 回答 2

7

您现在可以这样做ElementStream.matches

document.body.onClick.matches('.selector').listen((Event event) {
  print('Super cool!');

  // The currently registered target for the event
  // document.body
  event.currentTarget;

  // The element whose CSS selector matched
  // .selector
  event.matchingTarget;

  // The target to which the event was originally dispatched
  // the real element clicked under .selector
  event.target;
});
于 2013-08-27T09:36:05.440 回答
2

因为我没有找到可行的解决方案,所以我创建了启用委派的包。

您可以在 http://pub.dartlang.org/packages/delegate找到它

代码很简单:

delegate(parent, condition, handler) {
  return (event) {
    var element = event.target;
    while (element != parent && element != null) {
      if (condition(element)) {
        handler(event, element);
      }
      element = element.parent;
    }
  };
}

delegateOn(parent, String eventType, condition, handler) {
  parent.on[eventType].listen(delegate(parent, condition, handler));
}
于 2013-04-23T16:30:48.543 回答