我在window.resize事件中有一个函数,它运行良好,除了它似乎只工作一次。如果用户再次调整窗口大小,则不执行该功能。这是代码:
$(window).resize(function() {
var wait = setInterval(function () {
if (!$(currentBanner, loading).is(":animated")) {
clearInterval(wait);
loading.stop().fadeOut(300, function () {
if ($('#banner').css('display') == 'block'){
setTimeout(function() {
bannerInit();
}, 800);
startInterval();
if (initialLoad) {
initialLoad = false;
next.slideDown();
previous.slideDown();
}
}
});
}
}, 200);
}).resize();
有人知道如何确保每次调整窗口大小时都执行该函数吗?
答案 0 :(得分:0)
我不知道你的意图是什么,但是如果在窗口调整大小后要延迟执行,你应该将setInterval改为setTimeout
setInterval是一个无限循环,一直运行,直到你告诉它停止并且setTimeout只执行一次,它将等待x毫秒才能执行。
另外,你不需要打电话'调整大小()'每当窗口大小因任何原因(用户调整大小或最大化等)而被更改时,它都会被触发
$(window).on("resize",function() {
var wait = setTimeout(function () {
if (!$(currentBanner, loading).is(":animated")) {
clearInterval(wait);
loading.stop().fadeOut(300, function () {
if ($('#banner').css('display') == 'block'){
setTimeout(function() {
bannerInit();
}, 800);
startInterval();
if (initialLoad) {
initialLoad = false;
next.slideDown();
previous.slideDown();
}
}
});
}
}, 200);
});
答案 1 :(得分:-1)
那是因为您在事件定义结束时调用了.resize()
。
尝试更改为:
$(window).resize(function () {
//....
});
$(window).resize();