【发布时间】:2011-12-21 15:20:04
【问题描述】:
jQuery 有一个名为closest() 的可爱的方法,虽然名字有点错误,但它会沿着 DOM 树向上寻找匹配的元素。例如,如果我有这个 HTML:
<table src="foo">
<tr>
<td>Yay</td>
</tr>
</table>
假设element 设置为<td>,那么我可以像这样计算src 的值:
element.closest('table')['src']
如果 table 元素或其 src 属性中的任何一个丢失,它将干净地返回“未定义”。
在 Javascriptland 中已经习惯了这一点,我很想在 Rubyland 中找到与 Nokogiri 等效的东西,但我能想到的最接近的是使用 ancestors() 的这种明显不雅的 hack:
ancestors = element.ancestors('table')
src = ancestors.any? ? first['src'] : nil
需要三元,因为如果在空数组上调用,首先返回 nil。更好的想法?
【问题讨论】:
标签: ruby dom nokogiri closest ancestor