首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写element.parent().parent().parent().parent().parent()的更简洁的方法

编写element.parent().parent().parent().parent().parent()的更简洁的方法
EN

Stack Overflow用户
提问于 2011-01-13 04:09:10
回答 4查看 1.7K关注 0票数 9

如果我需要选择第10个父对象,有没有更干净的方法,然后重复.parent() 10次?

代码语言:javascript
复制
$('#element_id').parent().parent().parent().parent().parent().parent().parent().parent().parent().parent();
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-13 05:59:07

如果您真的需要获取第10个父对象,并且无法使用选择器来实现,则最顺利的方法可能是这样:

代码语言:javascript
复制
$('#element_id').parents().eq(9);
票数 5
EN

Stack Overflow用户

发布于 2011-01-13 04:11:20

如果有一个选择器代表你想要的目标,那么使用.closest().parents()

代码语言:javascript
复制
$('#element_id').closest('.someClass');
$('#element_id').parents('.someClass:first');

...but这两个函数都将返回找到的第一个匹配项。正确的解决方案将取决于您实际的HTML标记。

(请注意,.closest()还计算原始元素,而parents()从第一个祖先开始。)

还请记住,浏览器会进行HTML更正。因此,如果从没有<tbody><table>内部遍历到<table>外部的元素,执行x次.parent()可能会在不同的浏览器中产生不同的结果。

票数 15
EN

Stack Overflow用户

发布于 2011-01-13 04:13:58

下面的post here使用了这个实现:

代码语言:javascript
复制
jQuery.fn.getParent = function(num) {
    var last = this[0];
    for (var i = 0; i < num; i++) {
        if(!last) break; 
        last = last.parentNode;
    }
    return jQuery(last);
};
// usage:
$('#myElement').getParent(3);

所以你的用法很简单:

代码语言:javascript
复制
$('#element_id').getParent(10);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4673508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档