@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/
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
@coderlex Автор вопроса
Не уверен насчет поддержки этого метода, но, порывшись в исходниках, нашел недокументированный второй аргумент в колбек функции задания. Это объект для прикрепления хуков. Нужный нам называется соответственно "stop". Он вызывается только при "ручной" остановке текущей анимации методами stop() и finish(). При очистке или замене очереди колбек вызван не будет.

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

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

Войти через центр авторизации
Похожие вопросы