2017-08-04 168 views
0

只有在flexslider()函數完成後,纔想執行我的代碼。問題是flexslider()沒有返回承諾或其他可執行文件。僅在非可執行的異步函數完成後執行代碼

所以我應用這個討厭的解決方法,我想擺脫setTimeout。只有在flexslider被初始化後,我如何重構這個並執行我的代碼?

(function($) { 
    $('.flexslider').flexslider({ 
     animation: "slide", 
     controlNav: false 
    }); 
    setTimeout(function() { 
     var $navBar = $('.primary-nav'); 
     var navbarPosition = $navBar.offset().top; 
     $(window).scroll(function() { 
      var scrollPosition = $(this).scrollTop(); 

      if (scrollPosition >= navbarPosition) { 
       $navBar.addClass('navbar-fixed'); 
      } else { 
       $navBar.removeClass('navbar-fixed'); 
      } 
     }); 
    }, 1000); 
})(jQuery); 
+0

怎麼樣'$(無論).flexslider(無論).promise()' - 是一個承諾? –

回答

1

如何使用start:

$('.flexslider').flexslider({ 
    animation: "slide", 
    controlNav: false, 
    start: function(){ 
    // do something.... 
    } 
}); 

Documentation

+0

工作,謝謝。我沒有仔細閱讀文檔。只是一個假設的問題。如果'flexslider()'根本不提供任何回調函數,是否會有一種方法實現相同? – luqo33