首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.parent().parent().parent()的缩写

.parent().parent().parent()的缩写
EN

Stack Overflow用户
提问于 2015-07-23 15:51:45
回答 5查看 5.4K关注 0票数 5

我有一个jQuery函数,它需要获得元素的父元素的位置。

它看起来像是:

代码语言:javascript
复制
   function show(e) {
        //debugger;
           var nextTableSelector = $(e).parent().parent().parent().parent().parent().parent().parent().parent();
  }

对于遍历DOM结构是否需要一只短手?

与…有关的东西:

代码语言:javascript
复制
$(e).parent()[5];

有什么建议吗?

注意,这个DOM结构是由第三方JS框架生成的,我无法在这个结构中追加任何其他ID或类。我被困在这条路上了。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-07-23 17:23:25

如果您不能完全标识您想要的元素,但您知道它是第五个父元素,那么您可以按照您的建议执行$(e).parents().eq(5)$(e).parents()[5]

票数 4
EN

Stack Overflow用户

发布于 2015-07-23 16:27:31

因此,您需要的是.closest().parents(),如下所示。

代码语言:javascript
复制
var target = $('#source').closest('#target');
var target = $('#source').parents('#target');
alert ( target[0].id );

上面的HTML示例:

代码语言:javascript
复制
<div id="target">
    Man!
    <div>
        <div>
            <div id="source"></div>
        </div>
    </div>
</div>

我建议使用.closest(),因为.parents()沿着DOM树向上移动到文档的根元素,将每个祖先元素添加到临时集合中;然后,如果提供了一个选择器,则根据选择器筛选该集合,而.closest()只在DOM树上移动,直到找到所提供的选择器的匹配为止。

编辑:

至于你的情况,你可能想:

代码语言:javascript
复制
var n = 5; //say you want the 5th parent
var parent5th = $("#source").parents().eq(n-1);
alert (parent5th[0].id);

//So, your code becomes:
var n = 8; //You want the 8th parent
$(e).parents().eq(n-1);

如果你愿意的话,这里有一个不那么丑陋的函数:

代码语言:javascript
复制
$.fn.nthParent = function(level) {

    level = level || 1;
    if (level <= 0) return;

    return level === 1 &&
        $(this).parent() || 
        $(this).parents().eq(level-1);
}

用法:

代码语言:javascript
复制
//Apply some CSS to level 1 (immediate) parent
$("#source").nthParent().css({
    border: "1px solid red"
});

OR

$(".source").each(function(i) {
    $(this).nthParent(i+1).css({
        border: "4px solid blue"
    });
});

以上内容为A Demo

票数 8
EN

Stack Overflow用户

发布于 2015-07-23 16:14:19

您可以使用.closest()而不是parent().parent(),然后您将使用最接近的元素,而不管它在DOM结构中的位置有多远。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31592332

复制
相关文章

相似问题

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