相当于 Dart 中最近的,特别是 DartPolymer?

Equivalent to nearest in Dart, specifically DartPolymer?

我正在尝试找出一种方法来执行类似于 jquery 的最近函数。例如:

$("a.test").nearest(".group-parent");

但在飞镖中。

我正在查看 HtmlElement class 以查看是否有一种方法可以像上面那样做,但还没有找到任何真正可以沿着树向上走直到找到选择器(或 null 等)的东西).

有没有可以利用的东西来做这样的事情?

我想创建一个函数,它将循环遍历父对象,直到 parents = null(或文档的任何 returns)。

HtmlElement findNearestClass(HtmlElement node, String classString){
  if (node == null) return null;
  if (node.classes.contains(classString)) return node;
  return findNearestClass(node.parent, classString);
}

在与 Gunter 讨论后,我们确定了以下内容:

当您使用 Dart 创建组件时,您将扩展 PolymerElement,它似乎基于 HtmlElementHtmlElement 有父 Element.

我是这样看的,并注意到 Element class,实际上有一个 closest 函数具有以下签名

Element closest(String selectors);

这似乎解决了我想要的问题,并且可以使用对 HtmlElements 或 PolymerElmeent 的引用来做类似的事情。

可能对您的组件有用的常见场景如下:

(MouseEvent mouse){
  HtmlElement target = mouse.target;
  HtmlElement closestFoo = target.closest(".foo");
}

作为替代方案,Gunter 做了 link 这个,它具有您可以利用的最接近的实现。 https://github.com/bwu-dart/bwu_utils/blob/master/lib/browser/html.dart#L49