Очередь выполнения функций в Jquery

voodoo911
На сайте с 11.03.2008
Offline
157
3059

Подскажите, как можно очистить очередь выполнения функций в Jquery. К примеру, я хоу чтобы при скроле div появлялся и через 5 секунд пропадал.

$(window).scroll(function () {

setTimeout(function(){ $("#top_popup").show(); }, 0);

setTimeout(function(){ $("#top_popup").hide(); }, 5000);

});

Но если человек делает прокрутку с интревалами - к примеру колесиком, то я так понимаю эти функции каждый раз добавляются в очередь на выполнение и потом начинается каша и абсолютно не контролируемое поведение "#top_popup". Можно ли как то очистить очередь , чтобы предыдущая анимация не влияла? Что то типа

$(window).scroll(function () {

ОЧИСТИТЬ ОЧЕРЕДЬ

setTimeout(function(){ $("#top_popup").show(); }, 0);

setTimeout(function(){ $("#top_popup").hide(); }, 5000);

});

C
На сайте с 04.02.2005
Offline
291
#1

логично предположить...

если существует метод setTimeout, то и существует clearTimeout

И непонятно... а зачем делать

setTimeout(function(){ $("#top_popup").show(); }, 0);

проще и понятней

$("#top_popup").show();

timerId = setTimeout(function(){ $("#top_popup").hide(); }, 5000);

тогда и остановить таймер

clearTimeout(timerId);

не составит трудности

voodoo911
На сайте с 11.03.2008
Offline
157
#2

Тогда полуается, чтоЖ

$(window).scroll(function () {

$("#top_popup").show();

timerId = setTimeout(function(){ $("#top_popup").hide(); }, 5000);

});

Тогда clearTimeout(timerId); по идее должен вызываться сначала, чтобы отключить предыдущий? То-есть при скроле мы удаляем старый и создаем новый таймер

Что то типа

$(window).scroll(function () {

clearTimeout(timerId);

$("#top_popup").show();

timerId = setTimeout(function(){ $("#top_popup").hide(); }, 5000);

});

Но так же не будет работать по идее, ибо timerId не будет доступен. Или я не прав ?

D
На сайте с 14.01.2007
Offline
153
#3

а кто вам мешает объявить timerId глобально?

voodoo911
На сайте с 11.03.2008
Offline
157
#4

Блин, 16 асов без сна даются в знаки! Затупил. Спасибо Chukcha и Dinozavrю Вроде как заработало!

[Удален]
#5
voodoo911:
Блин, 16 асов без сна даются в знаки

детский сад, я рад когда столько не сплю, обычно часов 18 - минимум, чаще 19-21 без сна 🤣

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий