У меня есть часы, которые запускают «тик» каждые 2400 мс. В 'tic', я хочу, чтобы дети моих родительских divs были toggleClass, но не все одновременно: я использую индекс своего родителя для смещения триггера во времени, так что это происходит в какой-то волне. Кроме того, или, может быть, я должен начать с этого, я хочу, чтобы все это не происходило во время прокрутки пользователя. Мне удалось достать мой контейнер, чтобы перестать слушать «tic» с .off(), но я не могу показать очистка тайм-аута, который отвечает за смещение.Очистка тайм-аута jQuery за пределами области видимости
Вот jsfiddle: https://jsfiddle.net/andinse/w878ft4z/7/
Я новичок в JQuery и немного потерял в вложенности все это.
Любая помощь очень ценится!
var $parents = $('.parents');
var $parent = $('.parent');
var $child = $('.child');
var $speed = 2400;
var $loopLength = 5;
setInterval(function clock() {
$parents.trigger('tic');
}, $speed);
$.fn.play = function() {
$(this).on('tic', function() {
$child.each(function() {
var $that = $(this);
var $offset = ($that.parent().index() % $loopLength) * $speed/$loopLength;
setTimeout(function() {
$that.toggleClass('special');
}, $offset);
});
return this;
});
};
$parents.play();
$(document).scroll(function() {
$parents.off('tic');
clearTimeout($.data(this, 'scrollTimer'));
$.data(this, 'scrollTimer', setTimeout(function() {
$parents.play();
}, 200));
});