Есть эффект в очереди 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/