JavaScript / JQuery - 如何在使用后暂时禁用功能?

时间:2017-01-12 23:27:23

标签: javascript jquery delay wait

我有一个简单的JS,只要鼠标滚轮向上或向下移动,它就可以顺畅地自动滚动到另一个div。

这是脚本:

    $(document).bind('mousewheel', function(evt) {
        var delta = evt.originalEvent.wheelDelta
        if(delta < 0){
                $('html, body').animate({
                    scrollTop: $("#content-wrapper").offset().top
                }, 3000);
        }
        else {
                $('html, body').animate({
                scrollTop: $("#bgheader").offset().top
                }, 3000);
        }         
    });

我的问题是,如果我用鼠标滚轮播放几秒钟,它将永远开始在这里滚动,因为记录的所有移动都会作为额外的脚本启动排队。

有没有办法对剧本加上某种“冷却”?因此,在使用一次之后它可以再次使用,让我们说'3秒?或者动画结束后?

2 个答案:

答案 0 :(得分:1)

你可以取消绑定wheel事件监听器,然后使用jQuery的getaddrinfo()回调函数在事件监听完成后重新附加它,如下所示:

IN6ADDR_ANY_INIT

答案 1 :(得分:0)

我已经超时了。

var maxPoll = 3000,
    eventActive = false;

$(document).bind('mousewheel', function(evt) {
    if(eventActive) { 
        return
    } else {
        setTimeout(maxPoll, function() { eventActive = True })
    }
    var delta = evt.originalEvent.wheelDelta
    if(delta < 0){
        $('html, body').animate({
            scrollTop: $("#content-wrapper").offset().top
        }, maxPoll);
    }
    else {
        $('html, body').animate({
            scrollTop: $("#bgheader").offset().top
        }, maxPoll);
    }         
});

它很粗糙,它使用全局变量,但它基本上会在动画运行时关闭你的事件。