Зачем мне нужна эта функция обратного вызова для правильной работы? - PullRequest
0 голосов
/ 01 октября 2010

Я работаю над учебником по слайдеру изображений jQuery и потерял их в тот момент, когда они добавили функцию обратного вызова в опцию .animate () - обратный вызов - это метод removeClass. Зачем мне это нужно? Если я отключу функцию обратного вызова, ползунок перестанет работать.

function slideSwitch() { var $active = $('#slideshow IMG.active'); var $next = $active.next();</p> <pre><code>$active.addClass('last-active'); $next.css({opacity: 0.0}) .addClass('active') .animate({opacity: 1.0}, 1000, function() { $active.removeClass('active last-active'); });

}

$ (function () { setInterval ("slideSwitch ()", 5000); });

Вот как работает слайдер:

В основном, 3 изображения расположены (абсолютно) друг над другом. Первому изображению присвоен класс «активный» с высоким z-индексом, поэтому он отображается сверху.

Через 5 секунд код находит следующее изображение и делает этот класс «активным», а исходный - «.last-active», который имеет немного более низкий z-индекс. Новый «.active» имеет непрозрачность 0,0, но медленно анимируется до 1,0 в секунду.

На самом деле это довольно простой слайдер. Я понимаю все остальное, кроме того, зачем мне нужна эта функция обратного вызова, которая удаляет классы «последний-активный» и «активный» после завершения анимации. Разве «.active» не должен оставаться как «.active», чтобы быть на вершине?

Возможно, вы поможете мне, если вы сами увидели учебник. Его можно найти по адресу: http://jonraasch.com/blog/a-simple-jquery-slideshow

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 01 октября 2010

Этот обратный вызов удаляет классы из ранее активного слайда ($active).

$next становится новым активным слайдом (и получает класс из оператора незадолго дов animate).

Если код не удаляет класс из $active, после того, как все будет сказано и сделано, будет два активных слайда.

1 голос
/ 01 октября 2010

Обратный вызов вызывается после завершения анимации (изменение значения непрозрачности).

Таким образом, если вы удалите обратный вызов и добавите его сразу после анимации, классы будут удалены до того, как анимация будет завершена.

Иначе, если вы полностью удалите обратный вызов, вы потеряли способ удалить классы (конечно, XD ")

...