【问题标题】:jquery callback when animate in progress动画进行时的jquery回调
【发布时间】:2015-03-11 15:12:04
【问题描述】:

我想知道当animate 正在进行时如何进行回调,即开始动画。

这是我试过的代码:

$('#a').on('click', function() {
  $('#b').animate({opacity: 0}, 1000, function() {
    // animation complete
    $('#c').animate({opacity: 0, 1000};
  });
}

#b 动画完成时,我不希望#canimate

例如,我希望#c#b 动画开始后 0.5 秒后开始动画。

【问题讨论】:

  • 根据定义,回调是在某事完成后运行的某事。不过,这可能会有所帮助。 stackoverflow.com/questions/1251300/…
  • 谢谢 :) 是关于 queue() 的吗?我仍然不知道 queue() 效果是什么,我应该阅读更多教程,谢谢 :)
  • 我希望这就是 OP,有点糟糕,试图问的问题。
  • 感谢编辑 :) 谢谢你

标签: jquery callback jquery-animate


【解决方案1】:

使用 jQuery 的.delay() 方法在所需的延迟后开始#c 的动画。

$('#a').on('click', function() {
    $('#b').animate({opacity: 0}, 1000);
    $('#c').delay(500).animate({opacity: 0}, 1000);
});

编辑

在两个动画都完成的情况下,这里有几种方法可以做某事。

原油:

$('#a').on('click', function() {
    $('#b').animate({opacity: 0}, 1000);
    $('#c').delay(500).animate({opacity: 0}, 1000, function() {
        //here, #c's animation is guaranteed to be complete, but also #a's due to the timing/durations.
    });
});

更复杂:

$('#a').on('click', function() {
    var promise_b = $('#b').animate({opacity: 0}, 1000).promise();
    var promise_c = $('#c').delay(500).animate({opacity: 0}, 1000).promise();
    $.when(promise_b, promise_c).then(function() {
        //here, both animations are guaranteed to be complete.
    })
});

【讨论】:

  • 它的工作,非常感谢你:) 我能问更多吗?允许吗?或者我应该提出一个新问题?当#b 和#c 完成动画时,我如何进行回调?如果不允许在评论中提问,请告诉我,我会编辑它,谢谢:)
  • 好的,我已经添加了更多内容,以回答您的其他问题。
猜你喜欢
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
相关资源
最近更新 更多