因此,此問題與此類似: element with the max height from a set of elements但稍微複雜一點。 我有一個兩級子菜單的導航菜單。所以我們可以說,在html是這獲取每個父元素的最高子元素的高度
<ul>
<li>ParentItem1
<div class="megamenu">
<ul class="submenu1">
<li>SubItem1
<ul class="submenu2">
<li>SubSubItem1a</li>
<li>SubSubItem1b</li>
<li>SubSubItem1c</li>
</ul>
</li>
<li>SubItem2
<ul class="submenu2">
<li>SubSubItem2a</li>
<li>SubSubItem2b</li>
<li>SubSubItem2c</li>
<li>SubSubItem2d</li>
</ul>
</li>
<li>SubItem3
<ul class="submenu2">
<li>SubSubItem3a</li>
<li>SubSubItem3b</li>
</ul>
</li>
</ul>
</div>
</li>
<li>ParentItem2
<div class="megamenu">
<ul class="submenu1">
<li>SubItem1
<ul class="submenu2">
<li>SubSubItem1a</li>
<li>SubSubItem1b</li>
</ul>
</li>
<li>SubItem2
<ul class="submenu2">
<li>SubSubItem2a</li>
<li>SubSubItem2b</li>
<li>SubSubItem2c</li>
</ul>
</li>
<li>SubItem3
<ul class="submenu2">
<li>SubSubItem3a</li>
<li>SubSubItem3b</li>
<li>SubSubItem3c</li>
<li>SubSubItem3c</li>
<li>SubSubItem3c</li>
</ul>
</li>
</ul>
</div>
</li>
</ul>
我試圖找到最高等級=「submenu2」孩子的高度,運用它作爲高度與div.megamenu每個ParentItem1。因此,最終,ParentItem1的div.meganenu應該具有SubItem2的.submenu2的高度,ParentItem2的div.megamenu應該具有SubItem3的.submenu2的高度。
我的jQuery是這樣的。
$(document).ready(function() {
$('.megamenu').each(function() {
var highest = null;
var hi = 0;
$('.submenu2').each(function(){
var h = $(this).height();
if(h > hi){
hi = h;
highest = $(this);
}
});
//highest now contains the div with the highest so lets highlight it
$(highest).closest('.megamenu').css("height", hi);
console.log(hi)
})
});
不幸的是,這似乎只找到了第一個父項(ParentItem1)的最高.submenu2,把高度在其子megamenu。 ParentItem2的.megamenu沒有被分配ParentItem2的最高.submenu2的相應高度。
我該如何解決這個問題?我希望我沒有以非常複雜的方式提出我的問題。提前謝謝了!
什麼?嘗試在清單或大綱中解釋它,因爲你所說的話很難遵循。 – zer00ne
關鍵是這個導航列表不像最終形式。這意味着我不知道有多少ParentItem會在他們下面有megamenu(因此,你的答案vlk,雖然很好,但對這個問題並沒有太大的幫助,謝謝!)。 –
我也不知道SubSubItems將在每個子菜單的每個子項下。我完全不知道這個菜單的最終結構,因此我需要一個動態的解決方案,它將找到所有megamenus,爲每個megamenu找出最高ul與類submenu2(具有最多SubSubItems),計算其高度並動態分配它爲內聯CSS來定義相應的父Megamenu的高度。我知道,很難用言語來形容它,但我正在嘗試一些人,我很抱歉:S。 –