Nokogiri эквивалент метода closest () jQuery для поиска первого совпадающего предка в дереве

jQuery имеет прекрасный, хотя и несколько неверно названный метод, называемый closest () , который поднимается вверх по Дерево DOM ищет подходящий элемент. Например, если у меня есть этот HTML:

Yay

Предполагая, что элемент установлен на , тогда я могу вычислить значение src как this:

element.closest('table')['src']

И это чисто вернет "undefined", если отсутствует какой-либо элемент таблицы или его атрибут src.

Привыкнув к этому в Javascriptland, я хотел бы найти что-нибудь эквивалентное для Nokogiri в Rubyland, но самое близкое, что я смог придумать, - это явно неэлегантный хак с использованием ancestors () :

ancestors = element.ancestors('table')
src = ancestors.any? ? first['src'] : nil

Тернар необходим, потому что сначала возвращает nil, если вызывается для пустого массива. Идеи получше?

7
задан lambshaanxy 4 November 2011 в 00:49
поделиться