当我想获取元素的第三级父级时,我必须编写
$('#element').parent().parent().parent()
。 是否有更优化的方法?$('#element').parent().parent().parent()
。 是否有更优化的方法?$('.element').first().parents().eq(num);
。 - zzzzBov[2]
将返回底层DOM元素,而使用eq(2)
将返回一个jQuery对象。 - Frédéric Hamidi根据你的需求而定,如果你知道你要查找的父元素,可以使用.parents()选择器。
例如: http://jsfiddle.net/HenryGarle/Kyp5g/2/
<div id="One">
<div id="Two">
<div id="Three">
<div id="Four">
</div>
</div>
</div>
</div>
var top = $("#Four").parents("#One");
alert($(top).html());
使用索引的示例:
//First parent - 2 levels up from #Four
// I.e Selects div#One
var topTwo = $("#Four").parents().eq(2);
alert($(topTwo ).html());
$('#element').parents(".myParent")
来引用它。该方法可以在IT技术中使用。请注意,不要删除HTML标签。使用closest()
未找到任何答案,当您不知道所需元素向上多少级时,我认为这是最简单的答案,因此发布一个答案:
您可以使用closest()
函数与选择器结合使用,从元素向上遍历时获取第一个匹配的元素:
('#element').closest('div') // returns the innermost 'div' in its parents
('#element').closest('.container') // returns innermost element with 'container' class among parents
('#element').closest('#foo') // returns the closest parent with id 'foo'
var parent = $(innerdiv.get(0).parentNode.parentNode.parentNode);
.parent()
调用要快得多。$(selector).parents().eq(0);
其中0为父级别(0代表父级,1代表父级的父级等等)
:eq()
选择器,如下所示:$("#element").parents(":eq(2)")
您只需指定父级的索引:0表示直接父级,1表示祖父级,...
(function($){
$.fn.nthParent = function(n){
var $p = $(this);
while ( n-- >= 0 )
{
$p = $p.parent();
}
return $p;
};
}(jQuery));
var p = 1 + n; while (p--) { $p = $p.parent(); }
如果你想改成基于1的,由于Javascript是“falsey”,你可以使用:while (n--) { $p = $p.parent();}
从而避免了条件检查。 - Mark SchultheissnthParent(-2)
,你的函数会发生什么?你的例子是错误的。 - zzzzBovparents
列表中的第n个元素,这对于包含多个元素的选择是不正确的。 - zzzzBovvar p = n >? (1 + n):1;
而不是“nothing”的情况下,将返回第一个父级 - 或者在我的示例中它打破循环的地方。因此,它可能应该是:(function($) { $.fn.nthParent = function(n) { var $p = $(this); if (!(n > -0)) { return $() }; var p = 1 + n; while (p--) { $p = $p.parent(); } return $p; }; }(jQuery));
如果您不想返回任何内容。 - Mark Schultheiss0
进行自我引用,此时 nthParent
将是一个不准确的名称。 - zzzzBov$('#element').parentsUntil('.commonClass')
优点是您无需记住该元素与通用父元素(commonclass定义)之间有多少代。你也可以使用:
$(this).ancestors().eq(n)
例如:$(this).ancestors().eq(2)
-> this
的父级的父级。