部分使用鼠标滚轮滚动

时间:2013-08-13 18:45:01

标签: javascript jquery mousewheel

我正在使用鼠标滚轮插件来滚动页面的各个部分。

在动画完全完成之前,我应该考虑禁用我写的函数吗?

我正在运行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
});

2 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是创建“stoplight”变量。在函数开头将其设置为False,然后使用animate()函数的True参数在动画结束时将其重新设置为complete。然后使main函数仅在此变量为True时运行。

答案 1 :(得分:0)

您可能需要查看fullPage.js等内容,而不是重新发明轮子。

当您开始处理触控设备,触摸屏,旧浏览器,触控板或Apple笔记本电脑中存在的动态滚动时,它将为您免除许多麻烦......