JQuery анимируется еще после обратного вызова - PullRequest
4 голосов
/ 18 января 2012

У меня есть базовая карусель на http://jsfiddle.net/v53Fm/

Когда вы нажимаете кнопку пуска, она переходит к следующему пункту, однако я хочу, чтобы она постоянно прокручивалась.

По мереЯ вижу, что у меня есть функция обратного вызова в анимации finish(), которая затем вызывает scrollNext() снова для достижения этого.

Однако строка carousel.is(':animated') мешает ей повторяться.

Этоне должно быть правдой, так как она вызывает scrollNext() от конца функции обратного вызова анимации, поэтому есть идеи, почему она это делает?

Ответы [ 3 ]

3 голосов
/ 18 января 2012

Похоже, анимированный селектор не удаляется до тех пор, пока не завершится функция 'end'.

Однако, это работает:

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
}
2 голосов
/ 18 января 2012

Кажется, это проблема времени.Попробуйте:

function finish() {
    setTimeout(scrollNext, 100);  // adds a 100ms delay
}
0 голосов
/ 18 января 2012

Просто удалите оператор return и увеличивайте длительность анимации. Смотрите здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...