2016-12-13 1 views
2

Я пытаюсь найти способ выполнить что-то похожее на ближайшую функцию jquery. Пример:Эквивалент ближайшему в Дарт, в частности, DartPolymer?

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

но в дротике.

Я просмотрел класс HtmlElement, чтобы узнать, есть ли способ, который я мог бы сделать, как описано выше, но не нашел ничего, что могло бы подойти к дереву, пока не найдет селектор (или нуль и т. Д.).

Есть ли что-то на месте, которое уже можно использовать для совершения такой вещи?

Я думал просто создать функцию, которая будет проходить через родителей до тех пор, пока родители = 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

Вы имеете в виду '.closest()'? – jinglesthula

+0

Это может сделать то, что вы хотите, https://github.com/bwu-dart/bwu_utils/blob/master/lib/browser/html.dart#L49 –

+0

@jinglesthula благодарит за это. Я перепутал, думаю. Ближе всего то, что я хотел, да. – Fallenreaper

ответ

1

После обсуждения с Gunter, мы определили следующие:

При создании компонента с Дартом, вы продлите PolymerElement, который на основе HtmlElement кажется. HtmlElement имеет родителя Element.

Я смотрел, как таковой, и заметил в Element классе, есть на самом деле функция ближе, которая имеет следующую сигнатуру

Element closest(String selectors); 

, который, кажется, чтобы решить, что я хочу, и может использовать Ссылки HtmlElements или PolymerElmeent, чтобы сделать подобное.

Общий сценарий, который может быть полезен для компонента может быть что-то вроде:

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

В качестве альтернативы, Гюнтер сделал ссылку этот, который имеет близкое осуществление вы могли бы эффективно использовать. https://github.com/bwu-dart/bwu_utils/blob/master/lib/browser/html.dart#L49

Смежные вопросы