2009-02-18 66 views
7

所以我想要做的是协调一些使用jQuery的一些效果与我正在使用的一些AJAX调用。我的问题是,第二个div的淡入与第一个div的淡出同时发生。jQuery队列事件

这可能也适用于其他事件,所以我很好奇,有没有什么办法可以在fadeOut完成后进行fadeId启动?

jQuery("#div1").fadeOut("slow"); 
jQuery("#div2").fadeIn("slow"); 

感谢

回答

13

您可以用回调做到这一点。查看jQuery docs

jQuery("#div1").fadeOut("slow", function() { jQuery(this).fadeIn('slow'); }); 

几乎所有的jQuery效果都需要在效果结束后执行回调。

+0

谢谢,原来如此! :) – Brayn 2009-02-18 15:29:43

16

这通常是足够好的一个快速的动画,但如果你要排队了一些效果,你也可以利用队列()和出队()方法是这样的:


$("#div1").fadeOut(); 
$("#div1").queue(function() 
{ 
    $(this).fadeIn(); 
    $(this).dequeue(); 
}); 
$("#div").queue(function() 
{ 
    $(this).html("And now I'm sliding up. Wee!"); 
    $(this).slideUp("slow"); 
    $(this).dequeue(); 
}); 

这里,队列()将函数添加到对象的队列(不一定是动画)并且dequeue()执行该函数。

查看docs了解更多信息。

3

有在这使它不能在Firefox工作,修正版本上面的例子中的一些错字:

$("#div1").fadeOut(); 
$("#div1").queue(function() 
{ 
    $(this).fadeIn(); 
    $(this).dequeue(); 
}); 
$("#div").queue(function() 
{ 
    $(this).html("And now I'm sliding up. Wee!"); 
    $(this).slideUp("slow"); 
    $(this).dequeue(); 
});