2016-05-25 63 views
0

当两个向上和向下我有向上滚动时,向下滚动时应该控制台登录updown功能。向上滚动触发滚动起来

向下滚动工作正常,但向上滚动控制台时记录了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(); 

}); 

回答

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正在创建该问题。 意味着没有冒犯对方的回答或它的作者,我觉得 它通常是一个坏主意,有一个全局变量。

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