Как сжать / сопоставить несколько событий jQuery в одно событие с задержкой? - PullRequest
0 голосов
/ 22 сентября 2011

Я хочу сжать несколько событий в одно событие с временной задержкой. Мне не нужно, чтобы моя связанная функция неоднократно вызывалась для действительно распространенных вещей, таких как движение мыши и прокрутка страницы. Самое большее, каждые полсекунды было бы достаточно, если есть событие в очереди.

Ради более конкретного примера:

Допустим, я связываюсь с jQuery (...). Scroll () с помощью довольно дорогой функции. Когда пользователь прокручивает страницу, он будет вызываться сотни, возможно, тысячи раз. Я хочу сконцентрировать все эти события в один вызов события за .5 секунд, посылая самое последнее событие обработчику через 0,5 секунды и игнорируя предыдущие события, которые могли бы сработать.

Визуально:

  • 15: 20: 35.000 - Событие прокрутки пользователя. Таймер запускается. Новое событие сохранено.
  • 15: 20: 35.020 - Событие прокрутки пользователя. Заменить сохраненное событие.
  • 15: 20: 35.100 - Событие прокрутки пользователя. Заменить сохраненное событие.
  • 15: 20: 35.371 - Событие прокрутки пользователя. Заменить сохраненное событие.
  • 15: 20: 35.500 - Срок действия таймера истекает. Событие с 15: 20: 35.371 отправляется зарегистрированному обработчику / обратному вызову. Ни одно из более ранних событий не отправлено.

Кстати, пару месяцев назад я где-то нашел плагин jQuery, который специально делал именно это и имел некоторые приятные функции, но теперь я не могу найти его снова или любой подобный плагин. Я бы предпочел найти работающий плагин, чем заново изобретать колесо и взломать решение (но я возьму взлом).

1 Ответ

0 голосов
/ 22 сентября 2011

Вот плагин jQuery (не мной), который вводит события scrollstart и scrollend.Вы можете изменить временную задержку внутри функции, изменив параметр latency.Я использую это в текущем проекте, и он прекрасно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...