向上滚动时向上和向下滚动会向上和向下滚动

时间:2016-05-25 22:11:39

标签: jquery

我有一个功能,在向上滚动时应该控制日志up,在向下滚动时应该down

向下滚动工作正常,但向上滚动时,控制台会同时记录updown

为什么不向上滚动up,因为滚动时只记录down

function scrollTest() {

        var lastScrollTop = 0;

        $(window).scroll(function(event) {

            var st = $(this).scrollTop();

            if (st > lastScrollTop){
                console.log('down');
            } else if (st < lastScrollTop) {
                console.log('up');
            }

            lastScrollTop = st;

        });

    };

$( window ).on( "scroll", function() {

    scrollTest();

});

2 个答案:

答案 0 :(得分:1)

这解决了它:

var lastScrollTop = 0;
function scrollTest() {


    $(window).scroll(function(event) {

        var st = $(this).scrollTop();

        if (st > lastScrollTop){
            console.log('down ' + st + " | " + lastScrollTop);
            lastScrollTop = st;
            return 0;
        } 
        if (st < lastScrollTop) {
            console.log('up ' + st + " | " + lastScrollTop);
            lastScrollTop = st;
            return 0;
        }
      });

    };

$( window ).on( "scroll", function() {

    scrollTest();

});

问题是var lastScrollTop = 0;在每个卷轴上获得值0 here is the fiddle

答案 1 :(得分:1)

将代码更改为

    function scrollTest(){
          var lastScrollTop = $(window).scrollTop();
          $(window).scroll(function(event) {

          var st = $(this).scrollTop();

          if (st > lastScrollTop){
              console.log('down');
          } else if (st < lastScrollTop) {
              console.log('up');
          }

          lastScrollTop = st;

      });
            }        
    $( window ).on( "scroll", function() {
            scrollTest();
    });

var lastScrollTop = 0正在创建此问题。 意思是对其他答案或其作者没有冒犯,我觉得 拥有全局变量通常是一个坏主意。