Задать вопрос
@coderlex

Как остановить кастомное задание в очереди jQuery с setInterval() внутри?

Есть эффект в очереди jQuery. В его callback'е используется setInterval для анимации.

Через некоторое время вызывается stop(). Это удаляет callback текущего запущенного эффектa из очереди и запускает следующий.

Но setInterval() в предыдущем эффекте всё ещё работает. Куда поместить clearInterval() чтобы он вызывался по завершению задачи с помощью stop()?

Возможно, есть какой-то другой путь?

Вот пример:
$('body')
	.queue(function(next) {
		var i = 0, el = this;
		var interval = setInterval(function() {
			el.style.backgroundColor = i++ % 2 == 0 ? '#500' : '#050';
			if (i > 5) {
				clearInterval(interval);
				next();
			}
		}, 1000);
	})
	.queue(function() {
		this.style.backgroundColor = '#005';
	});

setTimeout(function() {
	$('body').stop();
}, 1500);

https://jsfiddle.net/coderlex/tLd9xtjj/
  • Вопрос задан
  • 125 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@coderlex Автор вопроса
Не уверен насчет поддержки этого метода, но, порывшись в исходниках, нашел недокументированный второй аргумент в колбек функции задания. Это объект для прикрепления хуков. Нужный нам называется соответственно "stop". Он вызывается только при "ручной" остановке текущей анимации методами stop() и finish(). При очистке или замене очереди колбек вызван не будет.

Обновил код на jsfiddle.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
teknik2008
@teknik2008
Расскажите про GOLANG. Мне интересно
Как вариант вынести выше переменную таймера
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
Wanted. Москва
от 250 000 до 400 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
22 янв. 2025, в 22:30
5000 руб./за проект
22 янв. 2025, в 22:25
50000 руб./за проект