2012-02-27 45 views
1

我想一個div來淡出,他們對,然後是一個短暫的停頓,之後,另一個div來淡入。jQuery的延遲時間似乎是錯的

這是我的嘗試,但OT不工作。淡出動畫在淡出動畫完成之前開始。

$('.nav .filters').fadeOut('200'); 
    $('.nav .map-r').delay('300').fadeIn('200'); 

請告訴我很奇怪的是它工作正常,如果我讓每個annimation 10倍以上:

$('.nav .filters').fadeOut('2000'); 
    $('.nav .map-r').delay('3000').fadeIn('2000'); 
+0

那些看起來是一樣的我;-) – will 2012-02-27 15:28:49

+2

不會淡出()取號作爲參數,而不是代表數字字符串文字?嘗試刪除單引號。是的,單引號只適用於'快','慢'等,否則參數應該是一個數字無引號。 – MrBoJangles 2012-02-27 15:30:39

+0

適合我的工作 - 只刪除間隔的引號... http: //jsfiddle.net/KskfD/ – Archer 2012-02-27 15:37:16

回答

0

由於這一點,我想,就是答案,我只是複製和粘貼我的評論上面:

「fadeOut()將數字作爲參數,而不是表示數字的字符串文字?嘗試刪除單引號。是的,單引號只用於'快','慢'等,否則參數應該是數字無引號。「

對於fadeIn()和delay()也是一樣的,並且切換(),等等。你可以把它叫做一個jQuery約定。

+0

因爲這是公認的答案,它值得upvote? – MrBoJangles 2014-01-27 16:39:02

0

你應該把淡入()在fadeOut()這樣的回調,這是執行時的淡出完成

$('.nav .filters').fadeOut(200, function(){ 
    $('.nav .map-r').delay(300).fadeIn(200); 
    //i'm not sure this works, if it doesn't just use setTimeout() 
    //setTimeout(function(){$('.nav .map-r').fadeIn(200)}, 300); 
}); 
+2

您需要將第一個'setTimeout()'參數包裝在匿名函數中,或者立即調用它並嘗試將返回值作爲回調函數傳遞給setTimeout。 – ThiefMaster 2012-02-27 15:32:15

+0

@ThiefMaster是的,我糾正了,我只是不知道是否延遲()作品使用這樣 – 2012-02-27 15:34:31

0
$('.nav .filters').fadeOut(200, function(){$('.nav .map-r').delay(300).fadeIn(200);});