1

切入正题 - 我有一个页面,如果您向上或向下滚动,它会自动移动到下一个 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()

功能..也没有工作。

有什么指导吗?谢谢

4

0 回答 0