Как можно остановить выполнение функции при исчезновении из поля видимости?
То есть если мы проскроллили ниже этого блока то функция отключается, если вернулись опять на эту секцию то включили?
let num = 0;
const max = $('.technology-timeline-tab').length;
let autoplayTimer; // переменная для id
function autoplay() {
$('.technology-timeline-tab').each(function (id) {
if ($(this).hasClass('active')) {
// eslint-disable-next-line radix
num = parseInt(id) + 1;
}
});
if (num >= max) {
num = 0; // Или обнуляем или останавливаем: return false;
}
$('.technology-timeline-tab').removeClass('active');
$('.technology-timeline-tab').eq(num).trigger('click');
autoplayTimer = setTimeout(autoplay, 5000); // сохранили
}
setTimeout(autoplay, 5000);
$('.technology-timeline-content__section').mousedown(function () {
$(this).addClass('mousedown');
$('.technology-timeline-content__section').css('cursor', 'grabbing');
clearTimeout(autoplayTimer); // остановили
});
$(window).mouseup(function () {
if ($('.technology-timeline-content__section').hasClass('mousedown')) {
$('.technology-timeline-content__section').removeClass('mousedown');
$('.technology-timeline-content__section').css('cursor', 'grab');
autoplay(); // запустили
}
});