如果滚动太快,Jquery鼠标滚动会注册两次

时间:2013-11-05 08:26:26

标签: jquery event-handling mousewheel

要切入追逐 - 我有一个页面,如果你向上或向下滚动它会自动移动到下一个div位置。当你滚动时,它会选择滚动事件并暂时禁用它,以便一次只允许一个滚动,这样就不会跳转页面。

我正在使用jquery mousewheel插件来接收滚动事件

我正在使用此代码:

$('body').mousewheel(function(event, delta) {

            if(delta < 0 && page < 3){
                    page++;
                    scrollToPage(true);
                }else if(delta > 0 && page > 0){
                    page--;
                    scrollToPage(true);
                }

    });

现在的问题是,在滚动事件中它几乎立即注册了eventlistener十几次,我只希望它为每次滚动推送注册一次。

所以我试过这个:

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()

功能..也没有用。

任何指导? 感谢

0 个答案:

没有答案