首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历N级子节点

遍历N级子节点
EN

Stack Overflow用户
提问于 2011-01-18 06:19:46
回答 4查看 2.6K关注 0票数 16

这看起来像是可以“内置”到jQuery中的很好的东西,但我认为它仍然值得一问。

我有一个问题,这个问题可以通过迭代一个元素的所有子元素来轻松解决。我最近发现,我需要考虑比"1级“更深一到两级的情况(只需调用.children()一次)。

代码语言:javascript
复制
jQuery.each(divToLookAt.children(), function(index, element)
    {
        //do stuff
    }
    );  

这就是我目前正在做的事情。为了深入到第二层,我在为每个元素编写代码后运行另一个循环。

代码语言:javascript
复制
jQuery.each(divToLookAt.children(), function(index, element)
{
     //do stuff
    jQuery.each(jQuery(element).children(), function(indexLevelTwo, elementLevelTwo)
    {
        //do stuff
    }
    );  
}
);

如果我想再深入一层,我必须重新做一遍。

这显然不是一件好事。我喜欢声明一个"level“变量,然后让它来处理所有的事情。有没有人对干净高效的jQueryish解决方案有什么想法?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-18 06:51:14

这是一个很棒的问题,因为深度捕获的级别很高。Check out the fiddle

已将其转换为插件。

激活

代码语言:javascript
复制
$('#div').goDeep(3, function(deep){ // $.fn.goDeep(levels, callback)
    // do stuff on `this`
});

插件

代码语言:javascript
复制
$.fn.goDeep = function(levels, func){
    var iterateChildren = function(current, levelsDeep){
        func.call(current, levelsDeep);

        if(levelsDeep > 0)
            $.each(current.children(), function(index, element){
                iterateChildren($(element), levelsDeep-1);
            });
    };

    return this.each(function(){
        iterateChildren($(this), levels);
    });
};
票数 6
EN

Stack Overflow用户

发布于 2011-01-18 06:44:43

这个问题太棒了:-)

如果你知道你的DOM不是太大,你可以找到所有的后代并过滤掉不符合条件的:

代码语言:javascript
复制
var $parent = $('#parent');
var $childrenWithinRange = $parent.find('*').filter(function() {
  return $(this).parents('#parent').length < yourMaxDepth;
});

在此之后,jQuery实例"$childrenWithinRange“将是该父<div>的所有位于某个最大深度内的子节点。如果你想要这个深度,你可以把"<“改成"===”。我可能在某处少了一个人。

票数 2
EN

Stack Overflow用户

发布于 2011-01-18 08:17:45

这个问题的答案听起来可能是XPATH。我不太了解浏览器支持,但在XPATH中,您只需创建如下路径

代码语言:javascript
复制
/*/*/*/*

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

https://stackoverflow.com/questions/4718559

复制
相关文章

相似问题

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