我正在尝试创建一个网站,可以在单次滚动操作中自动滚动到每个部分。这意味着代码必须检查页面是向上滚动还是向下滚动。我相信以下代码可以解决我的问题,但是当页面滚动时,滚动动作会被触发多次。你会看到if语句中的第一个警报达到5而不是期望的1。非常感谢有关此事的任何帮助。
[注意]我正在使用velocity.js库滚动容器内的每个部分。
[注意]我正在使用velocity.js库滚动容器内的每个部分。
var page = $("#content-container");
var home = $("#home-layer-bottom");
var musicians = $("#musicians");
var athletes = $("#athletes");
var politics = $("#politics");
var bio = $("#politics");
var pages = [ home,musicians,athletes,politics,bio ];
var pageCur = 0;
var lastScrollTop = 0;
page.scroll(function(){
var st = $(this).scrollTop();
var pageNex = pageCur + 1;
if (st > lastScrollTop){
alert(pageNex);
pages[pageNex].velocity("scroll", { container: $("#content-container") });
} else {
alert(pageCur-1);
pages[pageCur-1].velocity("scroll", { container: $("#content-container") });
}
lastScrollTop = st;
pageCur = pageNex;
});
setTimeout
,因为滚动事件会排队请求,所以如果没有setTimeout
,滚动事件仍然会以同步方式多次触发。 - deanwilliammills