我在$(window).resize()
上做了一些功能。其中的一个功能是具有大量div的复杂动画。
$window.resize(function() {
// some functions
doAnim();
}
这里的问题是resize()
函数触发了很多。 resize()
完成后是否可以触发一个函数,它不会触发一百次?
干杯
答案 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');
}