jQuery 有一个可爱的方法,虽然名字有些不妥,叫做close(),它沿着 DOM 树向上寻找匹配的元素。例如,如果我有这个 HTML:
<table src="foo">
<tr>
<td>Yay</td>
</tr>
</table>
假设element
设置为<td>
,那么我可以计算出src
这样的值:
element.closest('table')['src']
如果 table 元素或其 src 属性中的任何一个丢失,那将干净地返回“未定义”。
在 Javascriptland 中已经习惯了这一点,我很想在 Rubyland 中找到与 Nokogiri 等价的东西,但我能想到的最接近的是使用祖先()的这种明显不雅的 hack :
ancestors = element.ancestors('table')
src = ancestors.any? ? first['src'] : nil
需要三元组,因为如果在空数组上调用,首先返回 nil。更好的想法?