2011-11-16 38 views
0

我想要做这样的事情如何暂停的JavaScript,直到jQuery的淡入淡出的执行完成

  1. 淡入,涵盖一些其他分区
  2. 一些其他分区
  3. 淡出覆盖格的变化内容的DIV并揭示其下的一些其他div。

下面是一个代码:

$pH('#coveringDiv').fadeIn(300); 
//want to start doing something now, but only after above fadeIn finishes 
adContainer = $pH(currAdBubble).find('.mcc'); 
$pH(adContainer).empty().html("some html"); 
$pH('.phAdScroller').attr('kw',keyword); 
setTimeout("$pH('#coveringDiv').fadeOut(500);",300); 

,但发生的事情是,fadeIn,之后开始写代码一起。我希望在淡入淡出之后的代码只在fadeIn完成后启动。我尝试了一个空的setTimeout,但这并没有帮助。将代码放入函数并在setTimeout()中调用它会太奇怪,因为需要将许多参数传递给该函数。那么如何实现这一目标呢?

回答

6

fadeIn花费将在fadeIn后执行的回调函数完成:

$pH('#coveringDiv').fadeIn(300, function() { 
    //want to start doing something now, but only after above fadeIn finishes 
    adContainer = $pH(currAdBubble).find('.mcc'); 
    $pH(adContainer).empty().html("some html"); 
    $pH('.phAdScroller').attr('kw',keyword); 
    setTimeout("$pH('#coveringDiv').fadeOut(500);",300); 
}); 

http://api.jquery.com/fadeIn/

+0

适合手套! :D – Shades88

1

试试这个:

$pH('#coveringDiv').fadeIn(300, function() { 
    adContainer = $pH(currAdBubble).find('.mcc'); 
    $pH(adContainer).empty().html("some html"); 
    $pH('.phAdScroller').attr('kw',keyword); 
    setTimeout("$pH('#coveringDiv').fadeOut(500);",300); 
}); 
+0

这只是在动画结束后再增加300ms。 –

+0

请更改 –

+0

'fadeIn'调用中的函数在'fadeIn'完成后调用,所以不需要另外300ms的'setTimeout'。 –

2

大多数定时功能的jQuery支持回调,这当定时动作完成时被调用。所以......

$pH('#coveringDiv').fadeIn(, 300, function() { 
    ... code to execute after the fade completes ... 
}); 
1

fadeIn的第二个参数是调用的回调这就是当动画完成,所以,

$pH('#coveringDiv').fadeIn(300, anotherFuncName); 

$pH('#coveringDiv').fadeIn(300, function() { 
    // code here 
}); 
-2

添加停顿500秒。或循环倒计时。