2016-02-12 22 views
0

調整窗口大小後,只能運行5次函數嗎?當您再次調整大小時,再次運行該功能5次。在調整大小後運行jQuery函數5次

$(window).bind('resize', function() { 
    setTimeout(function(){ 
     var slider = $('.wrapper .flexslider').data('flexslider'); 
     slider.resize(); 
    }, 500); 
}); 

該函數每0.5秒運行一次。但瀏覽器無法處理它,並且一次運行此功能不足以正確調整flexslider的大小(我不知道爲什麼)。

+0

它的運行更多的時間比你想象的。 'resize'處理程序不會只運行一次。在手動調整大小時,您將應用100個'setTimeout' – charlietfl

+0

是否有替代方法? – hgnl96

+1

我認爲真正令人懷疑的是你需要多次調用'resize()'。可能值得研究爲什麼你需要這樣做。 – Gilgamesh

回答

0

是的。向你的函數添加一個回調函數,並且根據需要多次遞歸地調用它。

0

以下是註釋中提到的去抖功能的示例。

function debounce(func, wait, immediate) { 
     var timeout; 
     return function() { 
      var context = this, args = arguments; 
      var later = function() { 
       timeout = null; 
       if (!immediate) func.apply(context, args); 
      }; 
      var callNow = immediate && !timeout; 
      clearTimeout(timeout); 
      timeout = setTimeout(later, wait); 
      if (callNow) func.apply(context, args); 
     }; 
    }; 

    var myEfficientFn = debounce(function() { 
     // Your resize code here, only fired once 
    }, 500); 

    window.addEventListener('resize', myEfficientFn); 
相關問題