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