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您说得对。在完整的工作片段中,我把它做对了。答案是一样的,非常感谢。我希望我选择阿伦的答案没问题,但遗憾的是我不能同时选择两者。祝您有个美好的一天!不客气。当然可以。而且他在我面前回答。