当前滚动位置和上一个滚动位置的Javascript变量

时间:2014-04-28 15:34:08

标签: javascript jquery scroll

我正在尝试确定用户是向上还是向下滚动,我在一个不同的答案中找到了一些似乎可以帮助我的代码。我对这段代码的一个问题是我无法理解如何捕获last_scroll_position。我设置的函数返回scrollTop,因此获取变量current_position的值不是问题,但获取last_scroll_position的值似乎有点棘手。

以下是我找到的答案......

保留一个变量,比如last_scroll_position,当你有一个滚动时,如果是last_scroll_position - current_position> 0,用户向上滚动,如果小于0则向下滚动。

Differentiate between scroll up/down in jquery?

1 个答案:

答案 0 :(得分:0)

我建议您查看此示例: stackoverflow.com/a/24815216...

scroll event 在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);
});