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

时间:2016-12-13 19:22:51

标签: dart polymer polymer-1.0 dart-polymer

我试图想出一种方法来执行类似于jquery最近函数的方法。例如:

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

但是在飞镖中。

我正在查看HtmlElement类,看看是否有一种方法可以像上面那样做但是没有发现任何真正会在树上行走直到它找到选择器(或null等)。

是否有适当的东西可以用来做这样的事情?

我正在考虑创建一个循环遍历父项的函数,直到parent = null(或者文档的任何返回值)。

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

1 个答案:

答案 0 :(得分:1)

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

使用Dart创建组件时,您将基于PolymerElement扩展HtmlElementHtmlElement有一个父Element

我一直这样看,并注意到Element类,实际上有一个最近的函数,它有以下签名

Element closest(String selectors);

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

可能对您的组件有用的常见方案可能是:

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

作为替代方案,Gunter确实将此链接起来,它具有您可以利用的最接近的实现。 https://github.com/bwu-dart/bwu_utils/blob/master/lib/browser/html.dart#L49