Переменные Javascript для текущей позиции прокрутки и предыдущей позиции прокрутки

0

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

Вот ответ, который я нашел...

Храните переменную, скажем, last_scroll_position, и когда у вас есть прокрутка, если last_scroll_position - current_position> 0, пользователь прокручивается вверх и вниз, если он меньше 0.

Различать прокрутку вверх/вниз в jquery?

Теги:
scroll

1 ответ

0

Я рекомендую проверить этот пример: qaru.site/questions/24939/...

Событие прокрутки ведет себя странно в Firefox, его много раз вызывают из-за прокрутки гладкости, но он работает, вот пример:

//creates an element to print the scroll position
$("<p id='test'>").appendTo("body").css({
    padding: "5px 7px",
    background: "#e9e9e9",
    position: "fixed",
    bottom: "35px",
    left: "35px" });

//binds the "scroll" event
$(window).scroll(function (e) {
    var target = e.currentTarget,
        scrollTop = target.scrollTop || window.pageYOffset,
        scrollHeight = target.scrollHeight || document.body.scrollHeight,
        lastScrollTop = $(target).data("lastScrollTop") || 0,
        scrollText = "";

    if (scrollTop > lastScrollTop) {
        scrollText = "<b>scroll down</b>";
    } else {
        scrollText = "<b>scroll up</b>";
    }
    $("#test").html(scrollText +
      "<br>scrollTop: " + scrollTop +
      "<br>lastScrollTop: " + lastScrollTop);

    if (scrollHeight - scrollTop === $(target).innerHeight()) {
      console.log("► End of scroll");
    }
    //saves the current scrollTop
    $(target).data("lastScrollTop", scrollTop);
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню