我正在使用鼠标滚轮插件来滚动页面的各个部分。
在动画完全完成之前,我应该考虑禁用我写的函数吗?
我正在运行stop(),但这只会取消动画。
$('section').mousewheel(function(event, delta, deltaX, deltaY) {
$('section' ).waypoint(function(direction){
thisID = $(this);
},{ offset: '25%' });
if (delta > 0) {
console.log('up');
if ($(this).not(":first-child")) {
//$(this).animate(function(){
$('html, body').stop().animate({
scrollTop: thisID.prev().offset().top
}, 1000);
//});
}else {
$('html, body').stop().animate({
scrollTop: thisID.offset().top
}, 1000);
}
}
else if (delta < 0) {
if ($(this).not(":first-child")) {
$('html, body').stop().animate({
scrollTop: thisID.next().offset().top
}, 1000);
}
else {
$('html, body').stop().animate({
scrollTop: thisID.offset().top
}, 1000);
}
console.log('down');
}
return false; // prevent default
});
答案 0 :(得分:2)
执行此操作的一种方法是创建“stoplight”变量。在函数开头将其设置为False
,然后使用animate()
函数的True
参数在动画结束时将其重新设置为complete
。然后使main函数仅在此变量为True
时运行。
答案 1 :(得分:0)
您可能需要查看fullPage.js等内容,而不是重新发明轮子。
当您开始处理触控设备,触摸屏,旧浏览器,触控板或Apple笔记本电脑中存在的动态滚动时,它将为您免除许多麻烦......