jquery多个回调以保持动画顺序

时间:2010-09-29 19:21:59

标签: jquery

这是我第二天使用这个,所以我很抱歉,如果这里有一个明显的错误。我试图让3个函数在加载事件中一个接一个地执行,但第三个回调函数取消第二个。你被允许3吗?如果没有最新的方式。

$j(window).ready(function() {    
     $j("#content").animate({
        marginLeft: parseInt($j("#content").css('marginLeft'),10) == 0 ?
        $j("#content").outerWidth() : 0
    },function(){
        $j(".headerImg").slideToggle(900);
        },function(){
        $j(".headerTitleImg").slideDown(100);}
    );
});

谢谢。

1 个答案:

答案 0 :(得分:0)

您正在使用两个回调函数调用animate方法:animate(properties, callback, callback)。该文档仅指定使用一个回调函数,但它可能允许更多。但是,如果是这样,第二次回调将在第一次回复时被调用,它不会等待第一次回动的任何动画。

解决方案是使第二个函数成为第一个函数slideToggle调用的回调函数:

$j(window).ready(function() {    
  $j("#content").animate(
    {
      marginLeft: parseInt($j("#content").css('marginLeft'),10) == 0 ?
      $j("#content").outerWidth() : 0
    },
    function(){
      $j(".headerImg").slideToggle(
        900,
        function(){
          $j(".headerTitleImg").slideDown(100);
        }
      );
    }
  );
});