Как остановить функцию при зажатой кнопке мышки?
let num = 0;
const max = $('.technology-timeline-tab').length;
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');
setTimeout(autoplay, 5000);
}
$('.technology-timeline-content__section').mousedown(function () {
$(this).addClass('mousedown');
if ($('.technology-timeline-content__section').hasClass('mousedown')) {
console.log('стоять');
return;------------ не работает. пишет ESLint: Unnecessary return statement.(no-useless-return)
}
});
$(window).mouseup(function () {
if ($('.technology-timeline-content__section').hasClass('mousedown')) {
$('.technology-timeline-content__section').removeClass('mousedown');
autoplay();
console.log('пошла');
}
});
Ответы (1 шт):
Автор решения: Ein
→ Ссылка
Как вариант, можно сохранять id таймера и отменять его при нажатии
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); // сохранили
}
$('.technology-timeline-content__section').mousedown(function () {
$(this).addClass('mousedown');
console.log('стоять');
clearTimeout(autoplayTimer); // остановили
});
$(window).mouseup(function () {
if ($('.technology-timeline-content__section').hasClass('mousedown')) {
$('.technology-timeline-content__section').removeClass('mousedown');
autoplay();
console.log('пошла');
}
});
setTimeout | MDN
clearTimeout | MDN
На счёт ESLint: Unnecessary return statement.(no-useless-return): у вас подключён линтер, который следит за тем, что бы в коде не было лишнего мусора. В данном случае, он жалуется на то, что вы поставили return, который не имеет смысла, т.к. находится в конце функции и не возвращает значения.