1

我有一个非常简单的问题,但我似乎无法弄清楚。每次用户滚动时,scrollTop 都会发生变化。我想从 scrollTop 的新值中减去旧值。但是我如何存储旧值,以便在用户停止滚动后从新值中减去它?必须有一个简单的方法。

$(function(){
  $(window).scroll(function(){
      var curTop = $(window).scrollTop();
      var newTop = (curTop - curTop);
      console.log(newTop);  
   });
});

这显然是行不通的。你们有什么想法吗?

4

2 回答 2

0

这应该工作:

$(function(){
  var curTop = $(window).scrollTop();
  $(window).scroll(function(){
      var newTop = $(window).scrollTop();
      var diff = newTop - curTop;
      curTop = newTop;
      console.log(diff);
   });
});

它存储当前的curTop滚动顶部,并在计算新旧滚动顶部的差异后在每个滚动事件上更新它。

于 2012-10-15T21:06:51.650 回答
0

在函数范围之外,在全局范围内定义 oldScrollTop 并在每次调用函数时更新它,在您使用数据进行计算之后。

这样,“旧”值将从一个函数调用到另一个函数调用保持存储在全局范围内。通过全局范围,我的意思是在任何函数调用之外,甚至在 jquery 的 document.ready 之外

于 2012-10-15T20:59:40.023 回答