Как можно остановить выполнение функции при исчезновении из поля видимости?

То есть если мы проскроллили ниже этого блока то функция отключается, если вернулись опять на эту секцию то включили?

    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(); // запустили
    }
});

Ответы (0 шт):