Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.12.2013, 15:00
Интересующийся
Отправить личное сообщение для nvp2 Посмотреть профиль Найти все сообщения от nvp2
 
Регистрация: 31.10.2012
Сообщений: 15

Сброс длинного скрола mousewheel
Приветствую.
Есть обработчик на jquery.mousewheel, который при скроле мыши пролистывает страницу к предыдущему/следующему диву.
Неудобство в том, что при резком (длинном) прокручивании скрола происходит переход сразу на несколько элементов: следующий/предыдущий + еще несколько, в зависимости от интенсивности прокручивания.

Как можно это побороть, чтобы при одном прокручивании скрола переходило к следующему элементу, и последующие скролы блокировались?

Есть идея отслеживать время между скролами и если оно меньше секунды - то обработчик перехода не выполнять. Но как это реализовать - что-то никак не соображу
Ответить с цитированием
  #2 (permalink)  
Старый 06.12.2013, 18:16
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

Как вариант:
1. до скроллинга:
1.a. запомнить текущую позицию $(document).scrollTop()
1.b. запомнить текущий div, скажем это $('#old-div-id') (сделать это можно разными способами)
2. после скроллинга:
2.a. получить новую позицию $(document).scrollTop()
3. понять в какую сторону двигались (сравнить пункты 1.a и 2.a)
4. смотря в какую сторону движемся (вверх или вниз):
4.a. если вверх, то найти div, который находился перед уже посещённым (пункт 1.b): $('#old-div-id').prev()
4.b. если вниз, то найти следующий: $('#old-div-id').next()
5. получить позицию этого нового div, $('#new-div-id').offset().top
6. если пункт 2.a меньше (или больше, зависит от пункта 3), чем пункт 5, значит мы проскроллили дальше чем нужно. значит смотрим пункт 7.
7. принудительно переместиться к div, найденному в пункте 4.
8. установить новые данные для пунктов 1.a и 1.b.

Для события $(window).scroll() этот метод тоже будет работать.
.

Последний раз редактировалось mi.rafaylik, 07.12.2013 в 15:57.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скроллинг по событию mousewheel ponyspy jQuery 0 30.11.2013 16:08