2017-10-24 3 views
0

jQueryスクロールとスティッキーボタンに問題があります。jQueryスティッキーボタン

私はこのcode

$window.scroll(function() { 
    var $this = $(this); 
    var scrollTop = $this.scrollTop(); 

    if ($buttonFilter.length > 0) { 
    if (scrollTop + windowHeight > buttonFilterFullSize) { 
     if ($buttonFilter.hasClass('fixed')) { 
     $buttonFilter.removeClass('fixed'); 
     } 
    } else { 
     if (!$buttonFilter.hasClass('fixed')) { 
     $buttonFilter.addClass('fixed'); 
     } 
    } 
    } 
}); 

を持っており、崩壊のすべてが隠されているが、私はそれをすべて開くと、粘着性のボタンがあまり良く動作しないと私はスクロールを使用するときに従わないとき、それは良い仕事。

コードを改善するにはどうすればよいですか?

+0

あなたがリンクをクリックして、崩壊のコンテンツを開いたときに、あなたの変数の値が変更する必要がありますのでです:

あなたのコードは、以下のようなものでなければなりません。たとえば、テキストを開くと、 'buttonFilterOffset'(ボタンの上端のオフセット)が変化します。それらの変数を動的に計算する必要があります –

答えて

1

ウィンドウの(ブラウザウィンドウ)の高さではなくドキュメントの高さを取得するには、$(document).height();を使用し、アコーディオンを展開するときにスクロールイベント内に配置して値をリフレッシュする必要があります。

合計条件はscrollTopwindowHeightです。 scrollTopはY座標を返し、windowHeightはウィンドウの高さを示します。両方とも加算するとdocumentHeightとなります。

$window.scroll(function() { 
    var $this = $(this); 
    var scrollTop = $this.scrollTop(); 
    var documentHeight = $(document).height(); 
    var windowHeight = $(window).height(); 

    if ($buttonFilter.length > 0) { 
     if ((scrollTop + windowHeight) === documentHeight) { 
     if ($buttonFilter.hasClass('fixed')) { 
      //do something.... 
     } 
     } else { 
     if (!$buttonFilter.hasClass('fixed')) { 
      //do something.... 
     } 
     } 

    } 
関連する問題