jQuery在回调后仍然是动画的

时间:2012-01-18 13:14:23

标签: jquery animation callback

我在http://jsfiddle.net/v53Fm/

有一个基本的轮播

单击开始按钮时,它将滚动到下一个项目,但我希望它能够继续滚动。

正如您所看到的,我在动画finish()中有一个回调函数,然后再次调用scrollNext()来实现此功能。

然而carousel.is(':animated')行阻止它重复。

这不应该是真的,因为它从动画回调函数的末尾调用scrollNext()所以任何关于它为什么这样做的想法?

3 个答案:

答案 0 :(得分:3)

看起来:动画选择器直到“结束”功能完成后才被移除。

然而,这确实有效:

function scrollNext() {
    var carousel = $('ul');
    if (carousel.is(':animated')) return false;
    carousel.animate({ left: '-=180px' }, 400, finish);
}

function finish() {
   setTimeout(scrollNext,1); //runs the function one millisecond after the finish() method is called
}

答案 1 :(得分:2)

似乎是一个时间问题。尝试:

function finish() {
    setTimeout(scrollNext, 100);  // adds a 100ms delay
}

答案 2 :(得分:0)

只需删除return语句并增加动画持续时间。 请参阅here