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

Javascript 如何使用jQuery在html中获取div的祖父母的祖父母,javascript,jquery,html,Javascript,Jquery,Html,有没有更好的方法来获取父对象的父对象的父对象的父对象。。。大概5次 因此,不要使用这个: $(this).parent().parent().parent().parent().parent() 我可以用这样的东西: $(this).goBacktoNthParent(5); 有可能吗?如果父元素上有您想要获得的识别标记-例如id或类,您可以使用$(this)。最接近的(“祖父母元素”)您可以轻松创建自己的函数: function getNthParentOf(elem,i) { w

有没有更好的方法来获取父对象的父对象的父对象的父对象。。。大概5次

因此,不要使用这个:

$(this).parent().parent().parent().parent().parent()
我可以用这样的东西:

$(this).goBacktoNthParent(5);

有可能吗?

如果父元素上有您想要获得的识别标记-例如
id
,您可以使用
$(this)。最接近的(“祖父母元素”)
您可以轻松创建自己的函数:

function getNthParentOf(elem,i) {
    while(i>0) {
        elem = elem.parent();
        i--;
    }
    return elem;
}

var something = getNthParentOf($(this),5);
你可以试试

var parentControl = $('#yourcontrol').parent();
var grandParent = parentControl.parent();
您可以将遍历功能与
:nth()选择器结合使用

因此,结果将类似于:

$(this).parents(':nth(5)'));
注意:索引从0开始,因此对于您的情况,它应该是:

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

希望这能有所帮助

尝试使用.parentsUntil()

工作示例:

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

$(this).parents(':eq(4)')
$(this).parents().eq(4)
注意:使用父选择器

因为选择器是基于零的,所以我们给它的值比目标值少一个

演示:


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

$(this).parents(':eq(4)')
$(this).parents().eq(4)
注意:使用父选择器

演示:


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

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

$(el)

演示:

你能发布你的HTML结构吗?这似乎很奇怪,因为API文档中没有提到
:nth
选择器,只有
:nth子项
。但是我做了测试,它确实有效。