2009-01-20 158 views
15

我有两个div和两个单独的链接,触发div的slideDown和slideUp。完成一个动画,然后启动另一个动画

当其中一个div滑落并点击另一个时,我隐藏第一个div(slidingUp),然后打开另一个div(slidingDown),但此时就像一个div滑落,另一方,也是在同一时间,正在向上滑动。

有没有一种方法可以告诉jQuery等待完成向下滑动一个div,然后才开始向上滑动另一个div?

+1

可能是有用的,看看你有什么了。 – 2009-01-20 16:05:28

回答

20
$('#Div1').slideDown('fast', function(){ 
    $('#Div2').slideUp('fast'); 
}); 

编辑:你检查出手风琴插件(如果那是你想要做什么)?

0

大多数jQuery的函数都有一个回调参数,你可以传递一个函数。

+0

如何做到这一点? – 2010-03-07 20:48:17

0
$("#thisDiv").slideUp("slow", function() { 
    // This function is called when the slideUp is done animating 
    $(this).doNextThing(); 
}); 
-1

使用函数的第二个参数:callback。例如,

 
$(this).slideDown(speed, function(){ 
    $(this).slideUp(); 
}); 
+0

这将滑动同一个div然后备份,而不是真正的家伙问,呃? – 2009-01-20 16:07:58

1

您可以使用一个回调火下一个效果时,第一个完成:

$("#element1").slideUp(
    "slow", 
    function(){ 
     $("#element2").slideDown("slow"); 
    } 
); 

在这个例子中,效果基本show动画完成后定义为第二个参数的效果基本show方法调用该函数。

参见文档:http://docs.jquery.com/Effects/slideUp

5

你应该IT连锁这样

function animationStep1() 
{ 
    $('#yourDiv1').slideUp('normal', animationStep2); 
} 

function animationStep2() 
{ 
    $('#yourDiv2').slideDown('normal', animationStep3); 
} 

// etc 

当然你也可以用递归函数香料这件事,阵列控股动画队列等,可根据您的需求。

+3

请将*请*放在`animationStep2`中,而不是`function(){animationStep2(); }`。为什么要让一个新的函数调用另一个函数? – Aistina 2010-03-28 12:29:15

4

有点清洁例子,与动画之间的延迟:

$("#elem").fadeIn(1000).delay(2000).fadeOut(1000); 
相关问题