- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Подскажите, как можно очистить очередь выполнения функций в 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);
});
логично предположить...
если существует метод setTimeout, то и существует clearTimeout
И непонятно... а зачем делать
setTimeout(function(){ $("#top_popup").show(); }, 0);
проще и понятней
$("#top_popup").show();
timerId = setTimeout(function(){ $("#top_popup").hide(); }, 5000);
тогда и остановить таймер
clearTimeout(timerId);
не составит трудности
Тогда полуается, чтоЖ
$(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 не будет доступен. Или я не прав ?
а кто вам мешает объявить timerId глобально?
Блин, 16 асов без сна даются в знаки! Затупил. Спасибо Chukcha и Dinozavrю Вроде как заработало!
Блин, 16 асов без сна даются в знаки
детский сад, я рад когда столько не сплю, обычно часов 18 - минимум, чаще 19-21 без сна 🤣