Метод promise(): обработка завершения всех анимаций

Если нужно обработать завершение сразу всех анимаций в очереди, то следует вызвать метод promise(). Формат метода:

<Deferred> = promise([<Тип>][, <Объект>])

Метод возвращает объект Deferred (см. разд. 1.8.10), содержащий метод done(), который регистрирует обработчики, вызываемые после завершения всех анимаций в очереди. Формат метода:

<Deferred> = done(<Обработчик 1>[, <Обработчик 2>])

В качестве параметра можно также указать массив ссылок на функции обратного вызова. Пример обработки завершения всех анимаций:

<p>Абзац</p>
<input type="button" value="Запустить анимацию" id="btn1">

$('#btn1').click( function() {
   $('p').first()
         .fadeOut(800).delay(1000).fadeIn(800)
         .promise().done( function() {
            console.log('Все анимации завершены');
         });
});

Для получения объекта Deferred можно также воспользоваться функцией $.when():

$('#btn1').click( function() {
   $.when( $('p').first().fadeOut(800).delay(1000).fadeIn(800) )
    .done( function() {
       console.log('Все анимации завершены');
    });
});

Учебник по jQuery и AJAX
Учебник по jQuery и AJAX в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов