我需要检测用户滚动的方向-“上”或“下”。基于此答案中的代码: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”,这就是您记录的内容。