jQuery - 如何同时应用.animate()和.show('slide')?

时间:2013-12-18 19:45:43

标签: javascript jquery html css

在此演示http://jsfiddle.net/vHcXN中,您可以看到,如果您点击链接,则转换开始。首先div高度改变然后滑动效果。

如何同时制作两种作品?

 $(".turn_next").click(function(){
     $(".box2").hide();
     $(".box1_content").animate({height:'300px'}, 300,function(){
         $(".box3").show('slide', {direction: 'right'}, 500);
     });
 });

 $(".turn_back").click(function(){
     $(".box3").hide();
     $(".box1_content").animate({height:'100px'}, 300,function(){
         $(".box2").show('slide', {direction: 'left'}, 500);
     });
 });

3 个答案:

答案 0 :(得分:5)

从第一个动画的回调中删除第二个动画,

$(".turn_next").click(function(){
    $(".box2").hide();
    $(".box1_content").animate({height:'300px'}, 300);
    $(".box3").show('slide', {direction: 'right'}, 500);
 });

 $(".turn_back").click(function(){
    $(".box3").hide();
    $(".box1_content").animate({height:'100px'}, 300);
    $(".box2").show('slide', {direction: 'left'}, 500);
 });

您在call back function中指定的动画效果仅在初始动画完成后才会被触发。这就是你看到这种效果的原因。

DEMO

答案 1 :(得分:0)

由于您将函数作为参数传递给动画,因此它将在动画结束后用作回调函数。只需连续打电话给他们:

http://jsfiddle.net/wyE92/

$(".turn_next").click(function(){
   $(".box2").hide();
   $(".box1_content").animate({height:'300px'}, 300);
   $(".box3").show('slide', {direction: 'right'}, 500);
});

$(".turn_back").click(function(){
   $(".box3").hide();
   $(".box1_content").animate({height:'100px'}, 300);
   $(".box2").show('slide', {direction: 'left'}, 500);
});

请注意,它们不会完全同步,因为您将不同的长度传递给动画。

答案 2 :(得分:0)

目前,您已将.show('slide'...函数作为.animate({'left'...函数完成时的完整回调触发。删除回调并在第一个动画下面应用第二个动画:

$(".turn_next").click(function(){
   $(".box2").hide();
   $(".box1_content").animate({height:'300px'}, 300);
   $(".box3").show('slide', {direction: 'right'}, 500);
});

$(".turn_back").click(function(){
   $(".box3").hide();
   $(".box1_content").animate({height:'100px'}, 300);
   $(".box2").show('slide', {direction: 'left'}, 500);
});

Here是您编辑的小提琴,一起显示新动画。请注意,由于时间长度不同,两个动画不会对齐。