我需要检测用户滚动的方向-“上”或“下”。基于此答案中的代码:How can I determine the direction of a jQuery scroll event?

我试图将其包装在一个函数中,以使其与众不同-但不幸的是,它无法正常工作。我认为这与我返回值的方式有关,但方向始终是“向上”。刚接触JavaScript时,我在解决此问题时遇到了问题。

这是代码:

$(document).ready(function () {

    'use strict';

    var lastScrollTop = 0,
        st,
        direction;

    function detectDirection() {

        st = window.pageYOffset;

        if (st > lastScrollTop) {
            direction = "down";
        } else {
            direction = "up";
        }

        lastScrollTop = st;

        return  direction;

    }

    $(window).bind('scroll', function() {

        detectDirection();
        console.log(detectDirection());

    });

});

而且我还设置了一个Fiddle

您能帮我找出问题所在吗?

最佳答案

$(window).bind('scroll', function() {

    var dir = detectDirection();
    console.log(dir);

});

在每个滚动事件期间,您两次调用了detectDirection()。第一个检测到正确的方向,但是第二个只在相同的位置看到它,因此它返回“up”,这就是您记录的内容。

07-24 20:09