2012-10-18 65 views

回答

3

好了,好像我找到了解決辦法。問題是我認爲slideDown函數需要在動畫開始之前知道元素的高度(瞭解動畫的端點)。

當我用after()添加元素時,現在說出它的高度還爲時過早。

  • 該元素必須已經插入,否則它的高度爲零。
  • 元素必須不可見已經

最後,我發現這個工作液:

$(this).closest('.smoking-rate').after($el); 
$el.hide().slideDown() 

有人可以確認,高度的原因,它沒有工作?

+0

剛剛有同樣的問題,它的正確之處在於,當您嘗試在隱藏或未設置高度的動畫之前設置動畫效果時,它不會知道如何爲其設置動畫效果,因此不會動畫! – Cammy

0

您應該將效果基本show動畫完成後讓你到了slideDown電話:

$el.slideUp(1).slideDown('slow') 

應該

$el.slideUp(1, function(){ 
    $el.slideDown('slow'); 
}); 
+0

我看到了slideUp(1)作爲hack的地方。我試了你的代碼。它有些作品,但slideUp會使元素在動畫之前閃爍,並且它只能在after()函數之外工作。 – Tom

+0

我相當積極,你可以連鎖slideUp和Down無論如何沒有問題。 – Tom