2017-02-12 8 views
-2

私は質問があります。私はインターネット上のスティッキーナビゲーションのためにこのスクリプトを見つけました。なぜ 'var Scroll Y = $(window)'という行が分からないのですか? scrollTop(); '上にすることはできません「のvar stickyNav =関数(){」助けを私はオンラインで見つけたコードを理解できません

おかげ:)それが再される必要があるので

<script> 

$(document).ready(function() { 
     var NavY = $('.nav').offset().top; 

     var stickyNav = function(){ 
     var ScrollY = $(window).scrollTop(); 

     if (ScrollY > NavY) { 
      $('.nav').addClass('sticky'); 
     } else { 
      $('.nav').removeClass('sticky'); 
     } 
    }; 

    stickyNav(); 

    $(window).scroll(function() { 
     stickyNav(); 
    }); 
}); 

</script> 
+0

スクロール中に実際の位置を取得する必要があるため – baao

+0

関数の内側から関数の外側(またはその逆)にコードの行を移動すると、コードの構造が変更されるためです。基本的に、コードを変更すると、コードは* different *になります。 – David

+0

はい、スクロールで 'stickyNav()'関数が実行されるため、スクロールがトリガーされた時点で、上から現在のスクロール位置を動的に決定する必要があります。この時点より前にキャッシュされたデータは冗長です。 – ne1410s

答えて

0

ScrollYが、$(window)オブジェクトの先頭からの距離として計算されます。ユーザーがスクロールするたびに計算されます。NavYは、ナビゲーションとウィンドウの最上部との間の距離ではありません。

これは、ユーザーが.scroll()イベント内でスクロールを開始するたびに、関数stickyNav()が呼び出されるときに行われます。

関連する問題