窗口调整大小后触发一个函数

时间:2013-11-07 12:11:42

标签: javascript jquery html resize

我在$(window).resize()上做了一些功能。其中的一个功能是具有大量div的复杂动画。

$window.resize(function() {
    // some functions
    doAnim();
}

这里的问题是resize()函数触发了很多。 resize()完成后是否可以触发一个函数,它不会触发一百次?

干杯

2 个答案:

答案 0 :(得分:2)

所以,我相信这是一个类似的场景,当用户“输入”一些东西时:你不知道用户何时完成撰写句子,同样在这里,你不知道用户何时完成调整大小;所以你可以做的是有一个可接受的间隔:

var idt;
$(window).resize(function() {
    if (idt) clearTimeout(idt);
    idt = setTimeout(doAnim, 500);
}

您还可以使用闭包来避免使用idt变量污染全局范围。

然而,这里的要点是每次用户调整窗口大小时,它会设置超时并清除前一个:仅当用户离开窗口而不调整大小时,才会执行doAnim功能第二。当然你可以设定自己的延迟。

答案 1 :(得分:0)

您可以如下所示实现它。完成大小调整后会调用:

        var myTimer;
        $(window).resize(function() 
        {
            // some functions
            var interval = 500;
            clearInterval(myTimer);
            myTimer = setInterval(function () { doAnim(); }, interval);
        });

        function doAnim() 
        {
            clearInterval(myTimer);
            alert('Resized');
        }
相关问题