|
|
Синтаксис и описание:
Добавлено в jQuery 1.2.dequeue( [ queueName ] )
Команда .dequeue() удаляет из очереди элемента следующую по счёту функцию и сразу выполняет её. Используется вместе с .queue(fn) — пользовательская функция в очереди сама отвечает за то, чтобы очередь продолжила движение дальше.
Примечание: Если добавить в очередь функцию через .queue(fn), она не выполнится автоматически до конца и не передаст управление дальше — она обязана сама явно продвинуть очередь. Старый способ — вызвать внутри неё $(this).dequeue().
Примечание: Современный и предпочтительный путь (доступен с jQuery 1.4): функция, переданная в .queue(fn), сама получает первым аргументом функцию next — вызов next() делает то же самое, что и $(this).dequeue(), но не требует замыкания на текущий элемент и читается нагляднее:
$('#box').queue(function(next) {
$(this).addClass('processed');
next(); // эквивалент $(this).dequeue()
});
В jQuery 3.x и 4.0: Метод не деприкейчен. Как часть системы очередей — недоступен в slim-сборке: эффектов там нет с jQuery 3.0, а с 4.0 в slim дополнительно нет самих модулей deferred/queue, так что .dequeue() для пользовательских очередей в slim 4.0 тоже работать не будет.
Примеры:
Пользовательский шаг в очереди со старым способом продолжения через .dequeue().
$('#box').queue(function() {
$(this).toggleClass('red');
$(this).dequeue(); // без этого вызова очередь остановится здесь
});
Тот же результат современным способом — через аргумент next.
$('#box').queue(function(next) {
$(this).toggleClass('red');
next();
});
Именованная очередь: следующий шаг запускается вручную через .dequeue('steps').
$('#wizard').queue('steps', function() {
console.log('Шаг 1 выполнен, ждём кнопку "Далее"');
});
$('#next-btn').on('click', function() {
$('#wizard').dequeue('steps');
});
[ наверх ]
|
|