var p=0,t=0;
$(window).scroll(function(e) {
p = $(this).scrollTop();
if (t <= p) {
//向下滚
} else {
//向上滚
}
setTimeout(function() {
t = p;
}, 0);
});
网上找到的方法,其原理就是监听滚动条的滚动事件,把滚动前后的scrollTop值来作比较,精华在于setTimeout=0。解释起来就是javascript单线程执行的问题:必须在完成当前任务后才执行队列中的下一个任务。
而setTimeout=0 的作用就是可以 就能改变任务执行的先后顺序,延迟该任务发生,使之异步执行。