在Jquery.queue的最后一个效果结束时执行一个函数

时间:2010-01-19 19:55:30

标签: javascript jquery

我想使用fx和函数 我有一个动画,我想,在队列的最后,做一个ajax调用。
我似乎无法使其发挥作用...... 我完全不知道如何处理...

这将是一个非常非常粗略的例子,但是

$('#dvHeader').queue(function() {
  $('#dvLeftContent').slideDown(2000);
  $('#dvRightContent').animate({ backgroundColor: '#c71717' }, 2500)
  callAjax();
}

此代码在最后一个效果开始之前调用callAjax函数方式,事实上,几乎与第一个效果一样。 真实案例有点复杂,我不能使用动画效果的回调,例如。我想知道队列何时结束最后一次效果,或类似的事情。
如何在最后一个动画结束时触发该调用?

3 个答案:

答案 0 :(得分:1)

请参阅http://docs.jquery.com/Effects/animate

尝试将最后一个效果的回调方法(在您的情况下为animate())设置为ajax函数:

动画(params,[duration],[easing],[ callback ])

答案 1 :(得分:0)

使用回调机制将您的动画与您的通话链接在一起:

$('#dvHeader').queue(function() { 
  $('#dvLeftContent').slideDown(2000, function() {
      $('#dvRightContent').animate({ backgroundColor: '#c71717' }, 2500, function() { 
          callAjax();
      });
  });
});

答案 2 :(得分:0)

稍微仔细看看这些队列是如何工作的,我发现如果我只知道动画的最后一个元素,我可以将我的ajax调用排队,它会在动画之后放置我的函数,像:

$('#dvHeader').queue(function() {
  $('#dvLeftContent').slideDown(2000);
  $('#dvRightContent').animate({ backgroundColor: '#c71717' }, 2500);     
}

$('#dvRightContent').queue(function() {
  callAjax();
});

当然,具有与回调完全相同的行为 谢谢大家的帮助。