Pie*_*igi 14 javascript jquery dom
在我的javascript体验中,我发现这是一个非常常见的任务"搜索具有某些条件的元素的最近祖先(标记名称,类,...)".jquery的parents()方法可以完成这项工作吗?parent()的返回元素的顺序是可预测的吗?从上到下还是从下到上?目前我使用这个实用功能:
function ancestor(elem, selector) {
var $elem = $( elem ).parent();
while( $elem.size() > 0 ) {
if( $elem.is( selector ) )
return $elem;
else
$elem = $elem.parent();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
有人能告诉我是否有聪明的方法来完成这项工作?
nic*_*ckf 20
编辑:自jQuery 1.3以来,这已经作为closest()函数内置.例如:$('#foo').closest('.bar');
是的 - parents()遍历树.
<div id="a">
<div id="b">
<p id="c">
<a id="d"></a>
</p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
$('#d').parents("div:first"); 将选择div b.
Bor*_*gar 16
加入@ nickf的答案:
jQuery 1.3简化了这个任务closest.
鉴于DOM:
<div id="a">
<div id="b">
<p id="c">
<a id="d"></a>
</p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
你可以做:
$('#d').closest("div"); // returns [ div#b ]
Run Code Online (Sandbox Code Playgroud)
[ Closest返回一组]元素,其中包含与指定选择器匹配的最接近的父元素,包括起始元素.