При анимации в jQuery, что такое лучшая практика для увольнения обратного вызова только, когда ВСЕ элементы сделаны, анимировав а не для каждого элемента?
Например:
$('.someElements').fadeOut('fast', function() {
// dont do this until ALL elements are done fading
}
Это может быть фрагмент, который стоит попробовать:
var numberOfElements = $('.someElements').length;
$('.someElements').fadeOut(fast, function() {
if( numberOfElements-- > 0 ) return;
alert('call the Fireman!');
});
Предупреждение Это просто заполнитель для конечного обратного вызова, который вам нужно запустить.
РЕДАКТИРОВАТЬ (другой способ):
Вы также можете захватить все элементы, кроме последнего .
$('.someElements').not(.someElements:last).fadeOut();
, а затем добавить fadeOut с обратным вызовом только для It
$('.someElements:last').fadeOut(fast, function (){
// do something, it's the end of the world
};
Это большой вопрос, согласно документации jQuery:
Если анимируется несколько элементов, важно отметить, что обратный вызов выполняется один раз для каждого совпадающего элемента, а не один раз для анимации в целом.
Чтобы обойти это ограничение, можно:
.someElements
, и настроить отдельный обратный вызов для каждого из них. count
, которая отслеживает количество всех обратных вызовов. count
, пока она не достигнет 0. Когда счетчик достигнет 0, все обратные вызовы завершатся, и вам будет гарантировано, что все элементы закончили анимацию. Отсюда вы можете включить в обратный вызов специальный код, который будет делать все, что вам нужно...