如何使用jQuery获取html中祖父母的祖父母

有没有更好的方法来获得父母的父母的父母…像5次?

所以不要使用这个:

$(this).parent().parent().parent().parent().parent() 

我可以使用这样的东西:

 $(this).goBacktoNthParent(5); 

可能吗?

使用:eq()选择器

:eq()选择器允许您在匹配的集合的从零开始的索引处定位元素…

 $(this).parents(':eq(4)') 

注意:使用父选择器

因为选择器是基于零的,所以我们给它少了一个目标数量。

演示: http //jsfiddle.net/pmMFv/


使用.eq()方法

.eq()方法实际上与其选择器对应方法相同,允许您在匹配的集合的从零开始的索引处定位元素…

 $(this).parents().eq(4) 

注意:使用父选择器

演示: http //jsfiddle.net/pmMFv/2/


在循环中使用parentNode

为了获得最佳性能,我们可以使用元素的.parentNode属性,并在循环中运行它,每次都使用最新的父级更新变量…

 var el = this, i = 5; while(i-- && (el = el.parentNode)); $(el) 

演示: http //jsfiddle.net/pmMFv/1/

您可以轻松创建自己的function:

 function getNthParentOf(elem,i) { while(i>0) { elem = elem.parent(); i--; } return elem; } var something = getNthParentOf($(this),5); 

您可以将.parents遍历函数与:nth()选择器结合使用。

所以结果将是这样的:

 $(this).parents(':nth(5)')); 

注意:: :nth()索引从0开始,所以对于你的情况应该是:

 $(this).parents(':nth(4)')); 

如果要获取的父元素上有标识标记 – 例如idclass ,则可以使用$(this).closest("#grandparentElement")

希望,这会有任何帮助。

尝试使用.parentsUntil()

工作实例: http : //jsfiddle.net/ylokesh/wLhcA/

那么你可以试试

 var parentControl = $('#yourcontrol').parent(); var grandParent = parentControl.parent();