之前我詢問this question about setting a height back to 0 after toggling a class。jQuery在點擊時設置了兄弟的高度
雖然答案是正確的,但事實證明我的問題並非如此,我回來重新解釋並嘗試解決我的問題。
- 我有一個導航列表和一些項目有內他們一分導航列表
- 每個具有分導航項目有哪些你點擊
- 我想子導航
<ul>
開始與切換箭頭的高度爲0,而當您單擊切換箭頭我想使用jQuery該子導航的高度設置爲它的計算高度的項目
的HTML是這樣的:
<li class="slidedown">
<a href="#">Parent Link</a>
<!-- Dropdown arrow -->
<span class="slidedown-toggle">
<span class="caret"></span>
</span>
<!-- Submenu -->
<ul class="nav nav-sub">
<li>
<a href="#">Child Menu Item 1</a>
</li>
</ul>
</li>
回答我剛纔的問題給了我這個劇本:
$(function navCollapse() {
var slidedownToggle = $('#global-nav .slidedown-toggle');
slidedownToggle.click(function() {
var slidedown = $(this).parent('.slidedown');
var $li = $(this).closest('li');
var subnav = $(this).siblings('.nav-sub');
var subnavHeight = subnav.height();
slidedown.toggleClass('open');
if ($li.hasClass('open')) {
subnav.height(0);
} else {
subnav.height(subnavHeight);
}
});
});
但我很快意識到,一旦高度已被設置爲0時,無論您點擊多少次,腳本都會繼續將其計算爲0。 這讓我感到困惑和困惑。
舊的Bootstrap摺疊幾乎是我想要的(只有高度改變)。它通過JavaScript設置高度,然後使用CSS進行轉換。儘管我不想讓我的子菜單有display: none
。
任何想法?
注意:我不想使用JavaScript動畫。我想爲此使用CSS。 我也不想使用max-height
解決方案來使用僅CSS下拉菜單。這是我的後備。
ü可以創建[小提琴](http://fiddle.jshell.net/)? – rynhe
**爲什麼要打擾身高**?你可以簡單地''點擊()'點擊你的元素,不需要設置任何高度。 –
@ RokoC.Buljan - 沒有JS轉換? – davidpauljunior