@maiskiykot
Free coder

Как отменить setTimeout по событию скроллинг мышью?

Есть список, формируемый по Ajax из элементов li. Он имеет прокрутку из-за большого размера. Когда пользователь начинает прокручивать список нужно обработать это событие и отменить выполнение скрипта по setTimeout. Загвоздка у меня в том: как прописать это? Список формируется динамически, а значит в html не добавить событие. И какое событие нужно в данном случае? onMouseMove или что?
  • Вопрос задан
  • 277 просмотров
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
var timeout = setTimeout(handler, duration);

element.addEventListener('scroll', scrollHandler);

function scrollHandler() {
  clearTimeout(timeout);
  element.removeEventListener('scroll', scrollHandler);
}

или:
var timeout = setTimeout(handler, duration);

element.addEventListener('scroll', function() {
  if (timeout) {
    clearTimeout(timeout);
    timeout = null;
  }
});


где element - элемент на котором вы хотите обрабатывать событие scroll.

В первом случае слушатель события scroll, по первому событию отменяется. Во втором остается и если таймер будет переназначен, по scroll он снова будет отменен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы