2017-08-04 21 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

を使用することについてどのように - 約束ということでしょうか? –

答えて

1

か(何でも).flexslider(何でも).promise() `$`についてstart:

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

Documentation

+0

それは、ありがとう、働く。私は十分に慎重にドキュメントを通過しませんでした。ちょっと仮説的な質問。 'flexslider()'がコールバック機能をまったく提供しなかった場合、同じことを達成する方法がありますか? – luqo33

関連する問題