窗口调整大小只能工作一次

时间:2016-01-22 12:32:55

标签: javascript html css

我在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();

有人知道如何确保每次调整窗口大小时都执行该函数吗?

2 个答案:

答案 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();