调整大小函数的多个实例jQuery / jS

时间:2017-07-19 00:31:34

标签: jquery

您好我发现了一个很好的调整大小超时函数,可以在短暂超时后激活窗口调整大小时所选择的函数。

这是:

var animationsResize;
var anotherVariable;
window.onresize = function(){
    clearTimeout(animationsResize);
    animationsResize = setTimeout(checkWidthAnimations, 500);

    clearTimeout(anotherVariable);
    anotherVariable = setTimeout(anotherFunction, 500);
};

当用户在500毫秒后停止调整窗口大小时,这将运行我的自定义函数checkWidthAnimationsanotherFunction

我上面所做的是为我工作,但这里是我遇到问题的地方。当我在窗口加载函数中包装另一个函数然后创建一个这样的实例时,它不起作用。这是我需要修复的代码。

var animationsResize;
var anotherVariable;
var windowLoadVariable;
window.onresize = function(){
    clearTimeout(animationsResize);
    animationsResize = setTimeout(checkWidthAnimations, 500);

    clearTimeout(anotherVariable);
    anotherVariable = setTimeout(anotherFunction, 500);

    clearTimeout(windowLoadVariable);
    windowLoadVariable = setTimeout(windowLoadFunction, 500);
};

jQuery(window).on('load', function() {
    function windowLoadFunction() {
        //my function
    }
});

似乎window.onresize函数无法读取我的windowLoadFunction

是否有人有解决方案可以将我的windowLoadFunction添加到调整大小功能?

我尝试将另一个resize函数实例添加到窗口加载函数中,如下所示:

jQuery(window).on('load', function() {
    function windowLoadFunction() {
        //my function
    }

   var windowLoadVariable;
   window.onresize = function(){
       clearTimeout(animationsResize);
       windowLoadVariable = setTimeout(checkWidthAnimations, 500);
   });
});

这使得checkWidthAnimations工作,但随后打破了另外两个函数checkWidthAnimationsanotherFunction

任何人都知道如何让所有人一起工作?

谢谢!

1 个答案:

答案 0 :(得分:1)

这取决于你在窗口加载事件的回调中定义windowLoadFunction的原因...在该范围内,实际上,它无法从外部代码到达。您是否可以在窗口加载回调之外定义函数,然后在窗口加载后调用它?

var animationsResize;
var anotherVariable;
var windowLoadVariable;
window.onresize = function(){
    clearTimeout(animationsResize);
    animationsResize = setTimeout(checkWidthAnimations, 500);

    clearTimeout(anotherVariable);
    anotherVariable = setTimeout(anotherFunction, 500);

    clearTimeout(windowLoadVariable);
    windowLoadVariable = setTimeout(windowLoadFunction, 500);
};

function windowLoadFunction() {
    // your function
}

jQuery(window).on('load', windowLoadFunction);