Javascript 获取具有特定类的大多数子级的元素

Javascript 获取具有特定类的大多数子级的元素,javascript,jquery,html,Javascript,Jquery,Html,我有一个如下所示的导航: <div class="sub_navigation"> <ul> <li>First Level <ul> <li>Second Level</li> <li>Second Level <ul>

我有一个如下所示的导航:

<div class="sub_navigation">   
    <ul>
        <li>First Level
            <ul>
                <li>Second Level</li>
                <li>Second Level
                    <ul>
                        <li>Third Level</li>
                    </ul>
                </li>
            </ul>
        </li>
        <li>First Level
            <ul>
                <li>Second Level</li>
                <li>Second Level
                    <ul>
                        <li>Third Level
                          <ul>
                             <li>Fourth Level</li>
                          </ul>
                       </li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>
第二,我采用了堆栈溢出的一种方法,但对我也不起作用,每次只返回0:

var arr = []; //populate the length of children into this array.
$('.sub_navigation ul').map(function (i) {
    arr[i] = $(this).children('ul').length;
});
var maxValue = Math.max.apply(Math, arr); //get the max value from the array

console.log(maxValue);
有人能给我指一下正确的方向吗?遗憾的是,我再也不知道该怎么做了


非常感谢

您可以像这样使用
parentsUntil()

var temp=$('.sub_导航li').map(函数(){
返回$(this).parentsUntil('.sub_navigation','ul').length;
}).get();
var max=数学最大应用(数学,温度);
snippet.log('Count:'+max)

  • 一级
    • 二级
    • 二级
      • 三级
  • 一级
    • 二级
    • 二级
      • 三级
        • 第四级
          • 五级

您可以像这样使用
parentsUntil()

var temp=$('.sub_导航li').map(函数(){
返回$(this).parentsUntil('.sub_navigation','ul').length;
}).get();
var max=数学最大应用(数学,温度);
snippet.log('Count:'+max)

  • 一级
    • 二级
    • 二级
      • 三级
  • 一级
    • 二级
    • 二级
      • 三级
        • 第四级
          • 五级

你可以用另一种方式来做,而不是从上到下

检查每个
li
有多少
ul
祖先

var ulAncestorsPerLi = $( '.sub_navigation li' ).map(function(){
         return $(this).parentsUntil( '.sub_navigation', 'ul' ).length;
    }).get(),
    deepestLevel = Math.max.apply( Math, ulAncestorsPerLi );

alert( deepestLevel );
var-ulAncestorsPerLi=$('.sub_导航li').map(函数(){
返回$(this).parentsUntil('.sub_navigation','ul').length;
}).get(),
deepestLevel=Math.max.apply(数学,ulAncestorsPerLi);
警报(最深处)

  • 一级
    • 二级
    • 二级
      • 三级
  • 一级
    • 二级
    • 二级
      • 三级
        • 第四级

你可以用另一种方式来做,而不是从上到下

检查每个
li
有多少
ul
祖先

var ulAncestorsPerLi = $( '.sub_navigation li' ).map(function(){
         return $(this).parentsUntil( '.sub_navigation', 'ul' ).length;
    }).get(),
    deepestLevel = Math.max.apply( Math, ulAncestorsPerLi );

alert( deepestLevel );
var-ulAncestorsPerLi=$('.sub_导航li').map(函数(){
返回$(this).parentsUntil('.sub_navigation','ul').length;
}).get(),
deepestLevel=Math.max.apply(数学,ulAncestorsPerLi);
警报(最深处)

  • 一级
    • 二级
    • 二级
      • 三级
  • 一级
    • 二级
    • 二级
      • 三级
        • 第四级

我会检查
父项中的
ul
,直到
,这样计数就不需要调整了。非常感谢,我刚刚测试了它,它就像一个符咒一样工作@GabyakaG,Petrioli你是说像这样?返回$(this).parentsUntil('.sub_navigation',ul').length(不带+1)?@Sirence是的。我会检查
parentsUntil
中的
ul
,这样计数就不需要调整了。非常感谢,我刚刚测试了它,它工作起来很有魅力@GabyakaG,Petrioli你是说像这样?return$(this).parentsUntil('.sub_navigation',ul').length(不带+1)?@Sirence完全正确。您的答案也很有效,但我必须更改return parentsUntil('.sub_navigation',ul').length;返回$(this).parentsUntil('.sub_navigation','ul').length;让它工作。回答是更快还是性能更友好?@Sirence您说得对。在完整的工作片段中,我把它做对了。答案是一样的,非常感谢。我希望我选择阿伦的答案没问题,但遗憾的是我不能同时选择两者。祝您有个美好的一天!不客气。当然可以。此外,他在我面前回答了。你的回答也很有效,但我必须更改返回父项直到('.sub_navigation',ul')。长度;返回$(this).parentsUntil('.sub_navigation','ul').length;让它工作。回答是更快还是性能更友好?@Sirence您说得对。在完整的工作片段中,我把它做对了。答案是一样的,非常感谢。我希望我选择阿伦的答案没问题,但遗憾的是我不能同时选择两者。祝您有个美好的一天!不客气。当然可以。而且他在我面前回答。