вобщем на этом форуме когда листаешь тему то сверху при прокрутке показывается номер ответа как это работает? может логику подкините или пример кода скрин то о чем я говорю http://joxi.ru/L21G9Yvt6xQ7qr
Тут используется данный скрипт для этого. Каждый пост - элемент списка. Можно собрать их вместе: Код (Javascript): var posts = document.querySelectorAll('ol.messageList > li'); Далее номер нужного элемента можно узнать перебрав их все и запомнив номер первого элемента, у которого свойство Код (Javascript): posts[i].offsetTop будет больше document.body.scrollTop. Это в обработчике прокрутки страницы Код (Javascript): window.onscroll = function() { ... }
ну вот я прокручиваю блок и как я могу получить номер элемента на котором остановился? типо при прокрутке когда элемент списка уходит за пределы окна мы берем следующий эелемент и отслеживаем его. Вроде понял буду пробовать делать.
Откройте консоль браузера и вставьте туда следующий код Код (Javascript): var posts = document.querySelectorAll('ol.messageList > li');window.onscroll = function(){console.log('1-е сообщение: ' + posts[0].offsetTop + ' - страница: ' + document.body.scrollTop);} При прокрутке проследите какие значения будут у прокрутки страницы при появлении в окне верхней границы первого сообщения в этом посте.
Ок. А еще вопрос вот у меня получается на сайте страницы грузит без перезагрузки и по этому приходится писать события через on и вот пишу я так вот Код (Javascript): $("body").on("scroll",".overRev", function (event) { alert('1312123123') }) но неечего не происходит. получается событие не срабатывает.
Handler - это функция-обработчик события. И у Вас она в списке параметров идет третьей, а должна быть второй.
Код (Javascript): $(".overRev").on("scroll", function (event) { alert('1312123123') }) Вы так имеете ввиду, но он не работает
Зависит от того в какой момент Вы пытаетесь прицепить обработчик. Это надо делать всегда внутри вот этой конструкции: Код (Javascript): window.onload = function() { $(document).on("scroll", function (event) { console.log('1312123123'); }) } Или подобной. А так же стоит посмотреть консоль браузера - там могут быть подсказки в виде ошибок.
консоль пустая, запускаю в document.ready еще раз повторюсь что страници прогружаются без перезагрузки. попробовал так вот Код (Javascript): $("body").on("click",".overRev", function () { alert('1312123123') }) событие отработало нормально
@Dron-Boy, так пробовали: Код (Javascript): $(document).on("scroll", function (event) { console.log('1312123123'); }) ?
Тут событие срабатывает при прокрутке самого body он же появляется при загрузке страници и на него вешается это событие а вот у меня есть блок .overRev с scroll:auto который загружается динамически и на него почему то именно событие scroll не вешается (click пробовал сработало)
Код (Javascript): $(document).on("scroll", function (event) { console.log('1312123123'); }) так прокручиваю body и работает Код (Javascript): $('.back').on("scroll",".overRev",function (event) { console.log('1312123123'); }) так вешаю событие на блок с отзывами и прокручиваю его но собыьтие не срабатывает
ты по ссылке внимательно почитай. Скролишь документ и отслеживаешь координаты элементов относительно окна. В нашем деле без изобретательности никуда.