切入正题 - 我有一个页面,如果您向上或向下滚动,它会自动移动到下一个 div 位置。当您滚动时,它会接收滚动事件并暂时禁用它以一次只允许滚动一次,这样它就不会跳转页面。
我正在使用 jquery 鼠标滚轮插件来获取滚动事件
我正在使用这段代码:
$('body').mousewheel(function(event, delta) {
if(delta < 0 && page < 3){
page++;
scrollToPage(true);
}else if(delta > 0 && page > 0){
page--;
scrollToPage(true);
}
});
现在这里的问题是,在滚动事件中,它几乎立即注册了十几次事件侦听器,我只希望它为每次滚动推送注册一次。
所以我尝试了这个:
var allowScroll = true;
$('body').mousewheel(function(event, delta) {
if(allowScroll == true){
allowScroll = false;
if(delta < 0 && page < 3){
page++;
scrollToPage(true);
}else if(delta > 0 && page > 0){
page--;
scrollToPage(true);
}
}
});
现在,如果您使用鼠标滚动,这效果很好,但如果您使用触控板滚动,那么它会太快地注册事件,并且会在 allowScroll 变为 false 之前运行两次。
我也尝试使用
$.off()
功能..也没有工作。
有什么指导吗?谢谢