Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将功能限制为在重置前触发一次_Javascript_Jquery - Fatal编程技术网

Javascript 将功能限制为在重置前触发一次

Javascript 将功能限制为在重置前触发一次,javascript,jquery,Javascript,Jquery,我有以下功能,用于监控滚动位置和触发功能(在Iscroll4中) bgFadeToggle()函数基本上触发一个函数来显示/隐藏菜单。它包含一个存储向上/向下状态的变量,以便在滚动期间仅触发同一功能一次 我遇到的问题是,如果用户上下滚动的速度相当快,功能就会不断触发——这会在屏幕上产生喜剧效果和舞蹈效果!有人能推荐一种在一定时间内忽略重复呼叫的方法来避免此问题吗 onScrollMove: function() { var thisScrol = myScroll.ge

我有以下功能,用于监控滚动位置和触发功能(在Iscroll4中)

bgFadeToggle()函数基本上触发一个函数来显示/隐藏菜单。它包含一个存储向上/向下状态的变量,以便在滚动期间仅触发同一功能一次

我遇到的问题是,如果用户上下滚动的速度相当快,功能就会不断触发——这会在屏幕上产生喜剧效果和舞蹈效果!有人能推荐一种在一定时间内忽略重复呼叫的方法来避免此问题吗

 onScrollMove: function() {
           var thisScrol =  myScroll.getScrollY()
           if (thisScrol < -80 ){
                bgfadeToggle('on');
            }
            if (thisScrol > -80){
               bgfadeToggle('off');
            }
},

您可以保留一个布尔值
animationDone


在动画之前将其设置为false,然后设置为true。当布尔值为
false

时,不要执行其他动画。如果要在函数调用周围设置一个锁,则该锁应为全局变量并声明为false:

onScrollMove: function() {
       var thisScrol =  myScroll.getScrollY()
       if (thisScrol < -80 && !locked){
            locked = true;
            bgfadeToggle('on');
            locked = false;
        }
        if (thisScrol > -80 && !locked){
           locked = true;
           bgfadeToggle('off');
           locked = false;
        }
onScrollMove:function(){
var thisScrol=myScroll.getScrollY()
如果(此开关<-80&!锁定){
锁定=真;
bgfadeToggle('on');
锁定=错误;
}
如果(thisScrol>-80&&!已锁定){
锁定=真;
bgfadeToggle(“关闭”);
锁定=错误;
}

},

您可以使用如下的后期调用模式:

onScrollMove: function () {
    var thisScrol = myScroll.getScrollY();
    scrollCallback.invoke(thisScrol < -80);
};

var scrollCallback = function () {
    var _timeoutId,
        _delayToCall = 500;
    return {
        invoke: function (lessThan) {
            window.clearTimeout(_timeoutId);
            _timeoutId = window.setTimeout(function () {
                bgfadeToggle(lessThan ? 'on' : 'off');
            }, _delayToCall);
        }
    };
}();
onScrollMove:函数(){
var thisScrol=myScroll.getScrollY();
scrollCallback.invoke(thisScrol<-80);
};
var scrollCallback=函数(){
var\u timeoutId,
_延迟呼叫=500;
返回{
调用:函数(lessThan){
clearTimeout(_timeoutId);
_timeoutId=window.setTimeout(函数(){
bgfadeToggle(小于“开”:“关”);
},_delayToCall);
}
};
}();

如何显示菜单?你能显示
bgfadeToggle
code吗?刚刚添加-干杯,里卡多
onScrollMove: function () {
    var thisScrol = myScroll.getScrollY();
    scrollCallback.invoke(thisScrol < -80);
};

var scrollCallback = function () {
    var _timeoutId,
        _delayToCall = 500;
    return {
        invoke: function (lessThan) {
            window.clearTimeout(_timeoutId);
            _timeoutId = window.setTimeout(function () {
                bgfadeToggle(lessThan ? 'on' : 'off');
            }, _delayToCall);
        }
    };
}();