在我的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; }
有人能告诉我是否有聪明的方法来完成这项工作?
编辑:自jQuery 1.3以来,这已经作为closest()
函数内置.例如:$('#foo').closest('.bar');
是的 - parents()遍历树.
$('#d').parents("div:first");
将选择div b.
加入@ nickf的答案:
jQuery 1.3简化了这个任务closest
.
鉴于DOM:
你可以做:
$('#d').closest("div"); // returns [ div#b ]
[ Closest返回一组]元素,其中包含与指定选择器匹配的最接近的父元素,包括起始元素.