【问题标题】:Execute a function at the end of the last effect of a Jquery.queue在 Jquery.queue 的最后一个效果结束时执行一个函数
【发布时间】:2010-01-19 19:55:29
【问题描述】:

  我想使用 fx 和函数 我有一个动画,我想在队列的末尾做一个 ajax 调用。
我似乎无法让它工作......
我完全不知道如何进行......

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

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

  这段代码在最后一个效果开始之前调用callAjax函数的方式,实际上和第一个一样。
  实际情况稍微复杂一些,我不能使用animate的回调效果,例如。我想知道队列何时结束最后一个效果,或类似的东西。
如何在最后一个动画结束时触发该调用?

【问题讨论】:

  • @NoProblemBabe,我不明白为什么你不能使用 animate 函数的回调。动画队列对于每个元素都是唯一的。如果animate 是队列的最后一部分,它的回调将在all 队列元素完成后触发。请解释一下,以便我了解如何为您提供帮助。
  • 我以不同的方式使用这些效果,更适合我的小框架。

标签: javascript jquery


【解决方案1】:

见http://docs.jquery.com/Effects/animate

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

动画(参数,[持续时间],[缓动],[回调])

【讨论】:

  • 如前所述,我想知道如何在最后一个元素的动画结束时应用一个函数。常规回调和链不是我想要的。还是谢谢
【解决方案2】:

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

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

【讨论】:

  • 如前所述,我想知道如何在最后一个元素的动画结束时应用一个函数。常规回调和链不是我想要的。还是谢谢
【解决方案3】:

在仔细研究了这些队列是如何工作的之后,我发现如果我只知道要让它动画的最后一个元素,我可以将我的 ajax 调用排队,它会将我的函数放在动画之后喜欢:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-07-08
    • 2023-03-03
    • 2020-02-01
    • 2021-03-24
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    相关资源
    最近更新 更多