2013-03-07 55 views
4

我只是創造了這個:jsfiddle.net/MWzDe/jQuery的高度動畫()不工作

的JS:

$('button').click(function() { 
    if ($('ul').height = 0) { 
    $('ul').animate({'height':'100%'},'slow'); 
    } else { 
    $('ul').animate({'height': 0},'slow'); 
    }}); 

我需要滑動 'UL' 標籤上/下沒有 '真正' 消失它。代碼有什麼問題?還沒有成功。謝謝。

+0

可能要檢查你是否先天下之憂條件。 – revolver 2013-03-07 14:31:59

+4

您可能希望使用'=='進行比較,而不是'='(賦值)。這不是VB的地方,所有的東西都由魔法喙 – musefan 2013-03-07 14:32:04

+2

爲什麼不使用'slideToggle'?:'$('ul')。slideToggle('slow');';) – Stefan 2013-03-07 14:32:32

回答

2

因爲你正在使用jQuery,爲什麼不使用.slideToggle()

$('button').click(function() { 
    $('ul').slideToggle('slow'); 
}); 
+0

好吧,其實我嘗試創建響應式導航菜單,只是說我使用slideToggle(),我怎麼能消除它默認情況下?如果我使用CSS顯示:無;當用戶調整窗口大小時,它也會消失。 – egig 2013-03-07 14:54:43

+0

你的意思是什麼?響應通常與流體/斷點寬度相關聯,而您在上下(垂直)滑動菜單。如果你想在頁面加載時看不見,'display:none;'會做 - 當用戶調整窗口大小或向上滾動時不會影響顯示。除非我不明白你的意思? – Luca 2013-03-07 16:45:21

+0

上面的代碼是用於小屏幕的,如果我使用slideToggle():'ul'滑動上/消失時,它會內聯樣式化'ul',使用dislay:none,我用fireBug檢查過它。如果用戶在該狀態下調整窗口大小,'ul'仍然是「顯示:無」。我需要它在用戶在「狀態」中調整窗口大小時進行顯示。也許我需要它的行爲像溢出:隱藏;不管怎麼說,還是要謝謝你。 – egig 2013-03-08 01:11:51

2

使用的slideToggle()

DEMO VIEW

$('button').click(function() { 
    $('ul').slideToggle('slow'); 
}); 
6

.height是一個功能:使用$('ul').height()獲得高度這樣

if ($('ul').height() == 0) { 
} 
+0

你應該也使用等於(==)而不是設置等於(=)像udidu沒有 – 2013-03-07 14:37:14

+0

抱歉,代碼剛剛編輯,這是我的錯誤,但仍然沒有改變任何東西 – egig 2013-03-07 15:02:10

2

只需使用.slideToggle功能。 DEMO HERE

$('button').click(function() { 
    $('ul').slideToggle(); 
}); 
4

嘗試:

$('button').click(function() { 

    $('ul').animate({ 
     'height':'toggle' 
    }, 'slow'); 

}); 

小提琴here

0

下面的代碼使用動畫

$('button').on(click, function() { 
    $('ul').animate({height: 'toggle'},'slow'); 
})