2012-02-27 18 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);});