Jquery 阻止页面滚动功能生成队列

Jquery 阻止页面滚动功能生成队列,jquery,scroll,queue,Jquery,Scroll,Queue,我正在写一个有三个部分的页面(目前)。与可滚动页面不同,我希望该页面能够检测到想要滚动的用户(通过抓取滚轮数据),并自动滚动到该部分。这样,页面的每一层都可以滚动到位(覆盖整个窗口),而其他层则不可见 我遇到的问题是,代码检测到scrollwheel事件并过快地启动scroll函数,从而构建一个队列,完全按照scroll定义的方向滚动页面。基本上,我不能让它停留在中间层。 我已尝试通过以下方式限制滚动事件: 我还尝试了实现.stop()和.clearQueue()方法。为了获得我想要的行为,我已

我正在写一个有三个部分的页面(目前)。与可滚动页面不同,我希望该页面能够检测到想要滚动的用户(通过抓取滚轮数据),并自动滚动到该部分。这样,页面的每一层都可以滚动到位(覆盖整个窗口),而其他层则不可见

我遇到的问题是,代码检测到scrollwheel事件并过快地启动scroll函数,从而构建一个队列,完全按照scroll定义的方向滚动页面。基本上,我不能让它停留在中间层。

我已尝试通过以下方式限制滚动事件:

我还尝试了实现.stop()和.clearQueue()方法。为了获得我想要的行为,我已经用记忆中无法记住的方式重写了这段代码。 谢谢你的帮助

这是我的密码:

var tier=1//页面加载时的当前层

var mouseweelevt=(/Firefox/i.test(navigator.userAgent))?“DOMMouseScroll”:“鼠标滚轮”

$(窗口).bind(mouseweellevt,函数(e){

var evt=window.event | | e evt=evt.originalEvent?evt.originalEvent:evt

var delta = evt.detail ? evt.detail*(-40) : evt.wheelDelta //grabs data
if(delta < 0){ //if scroll down

    checkscroll();

}

else if(tier != 1) {    //prevents tier from changing if page can't scroll up

tier = tier - 1;

scroll();

}
})

函数checkscroll(){


}

也许您可以计算offset().top(tier1.offset().top到tier1.offset().top+tier1.height=tier1范围,tier2.offset().top+tier2.height=tier2范围,…)的范围/面积。检查滚动窗口offset().top是否在活动tierRange的范围内。
如果为true,则不滚动。如果为false,则滚动。

我已经想到了这一点,并尝试在scroll参数中添加对position.top的检查,但它对我没有效果。
if(tier == 1) {

$('html,body').animate({scrollTop: $('#tier1').offset().top}, 1000);

}

else if(tier == 2) {

$('html,body').animate({scrollTop: $('#tier2').offset().top}, 1000);

}

else if(tier == 3) {

$('html,body').animate({scrollTop: $('#footer').offset().top}, 1000);

}
if(tier != 3) {     //prevents tier from changing if page can't scroll down

tier = tier + 1;

scroll();

}