Показать сообщение отдельно
  #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.
Ответить с цитированием