Хорошо с этим ..
$(window).scroll(function()
{
$('.slides_layover').removeClass('showing_layover');
$('#slides_effect').show();
});
Я могу сказать, когда кто-то прокручивает, исходя из того, что я понимаю. Таким образом, я пытаюсь понять, как поймать, когда кто-то остановился. Из приведенного выше примера вы можете видеть, что я удаляю класс из набора элементов во время прокрутки. Однако я хочу снова включить этот класс, когда пользователь перестанет прокручивать.
Причина этого в том, что я намерен провести демонстрацию наложения во время прокрутки страницы, чтобы придать странице особый эффект, над которым я пытаюсь работать. Но один класс, который я пытаюсь удалить при прокрутке, конфликтует с этим эффектом, поскольку это эффект прозрачности для некоторой природы.
Ответы:
Обновить
Я написал расширение для улучшения
on
обработчика событий по умолчанию в jQuery. Он прикрепляет функцию обработчика для одного или нескольких событий к выбранным элементам и вызывает функцию обработчика, если событие не было запущено в течение заданного интервала. Это полезно, если вы хотите запустить обратный вызов только после задержки, например, событие изменения размера или подобное.Важно проверять github-repo на наличие обновлений!
https://github.com/yckart/jquery.unevent.js
Используйте его, как любой другой обработчик
on
илиbind
-event, за исключением того, что вы можете передать дополнительный параметр в качестве последнего:http://yckart.github.com/jquery.unevent.js/
(эта демонстрация используется
resize
вместоscroll
, но кого это волнует ?!)источник
Использование jQuery throttle / debounce
jQuery debounce отлично подходит для таких проблем. jsFidlle
Второй параметр - это флаг at_begin. Здесь я показал, как выполнять код как в «начале прокрутки», так и «в конце прокрутки».
Использование Lodash
Как предложил Барри П., jsFiddle , подчеркивание или lodash также имеют debounce, каждый с немного другим apis.
источник
leading
иtrailing
сами, потом убедитесь, что не может быть путаницы.Роб В. предложил мне проверить еще один пост здесь, в стеке, который по сути был похож на мой исходный. Читая это, я нашел ссылку на сайт:
http://james.padolsey.com/javascript/special-scroll-events-for-jquery/
На самом деле это помогло мне очень хорошо решить мою проблему после небольшой настройки для моих собственных нужд, но в целом помогло избавиться от множества болтовни и сэкономило мне около 4 часов, чтобы разобраться в ней самостоятельно.
Увидев, что этот пост, кажется, имеет некоторые достоинства, я решил, что вернусь и предоставлю код, изначально найденный по упомянутой ссылке, на тот случай, если автор когда-нибудь решит пойти в другом направлении с сайтом и в конечном итоге уберет ссылку.
источник
Я согласился с некоторыми из приведенных выше комментариев, что прослушивание тайм-аута было недостаточно точным, поскольку оно сработает, когда вы перестанете перемещать полосу прокрутки на достаточно долгое время, а не когда вы перестанете прокручивать. Я думаю, что лучшим решением будет прислушиваться к тому, как пользователь отпускает мышь (mouseup), как только они начинают прокрутку:
и пример его работы можно увидеть в этом JSFiddle
источник
Вы можете установить интервал, который запускается каждые 500 мс или около того, в следующих строках:
Я не тестировал этот код, но принцип должен работать.
источник
очень маленькая версия с возможностью начала и конца
источник
Хорошо, это то, что я использовал раньше. В основном вы смотрите рефери до последнего
scrollTop()
. Как только ваш тайм-аут очищается, вы проверяете текущийscrollTop()
и, если они совпадают, вы завершаете прокрутку.источник
Стиль ES6 с проверкой начала прокрутки.
Использование:
источник
пожалуйста, проверьте событие jquery mobile scrollstop
источник
Для тех, кто все еще нуждается в этом, вот решение
источник
Это должно работать:
источник
Вот как с этим справиться:
источник
Это обнаруживает остановку прокрутки через 1 миллисекунду (или изменяет ее) с помощью глобального таймера:
источник