jQueryはスクロールバーが下部に到達したかどうかを検出する


一、jQuery検出ブラウザwindowスクロールバーが底部に到達
jQuery取得位置と寸法相関関数:$(document).height()ページ全体の高さを取得$(window).height()現在、つまりブラウザが見えるページの部分の高さを取得します.このサイズは、ブラウザウィンドウをズームするときに変更され、documentとは異なるscrollTop()は、スクロールバーの上部に対する一致する要素のオフセットを取得します.scrollLeft()は、スクロールバーの左側に対する一致要素のオフセットを取得する.scroll([[data],fn])スクロールバーが変化した時にscrollイベントjQueryに触れてスクロールバーが底部コードに到達することを検出する:
$(document).ready(function() {
  $(window).scroll(function() {

    if ($(document).scrollTop()<=0){
      alert("          0");
    }

    if ($(document).scrollTop() >= $(document).height() - $(window).height()) {
      alert("          " + $(document).scrollTop());
    }
  });
});

二、jQuery検出div中スクロールバーが底部に到達
前編ではjQuery検出ブラウザwindowスクロールバーが底に到達したことを紹介したが、scrollTopとscrollHeightの概念はまだ理解されておらず、通常スクロールバーはdivに置かれている.
<div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
  <div style="height:750px;">
  div>
div>

内部のdivラベルの高さは外部よりも長く、外部のdivでは垂直スクロールバーが自動的に表示されるため、ブラウザで開くと垂直スクロールバーが表示されます.
では、ここの外部divのscrollTop、scrollHeight属性はいったい何なのでしょうか.実際、jsコードでは、スクロールバーは抽象的に「点」として扱われています.scrollHeightは「スクロールバーの高さ」(b)ではなく、スクロールバーがスクロールする必要がある高さ、すなわち内部divの高さ750 pxを表す.一方、scrollTopは、スクロールバー(1つのポイント)の現在の位置が750 pxでどれだけ占めているかを示します.
垂直スクロールバーが底部に到達したかどうかを判断

   <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta http-equiv="content-type" content="text/html;charset=utf-8">
     <title>title>
     <script language="javascript" src="jquery-1.4.2.min.js" mce_src="jquery-1.4.2.min.js">script>
     <script language="javascript">
     $(document).ready(function (){
       var nScrollHight = 0; //      (          )
       var nScrollTop = 0;   //        
       var nDivHight = $("#div1").height();
       $("#div1").scroll(function(){
         nScrollHight = $(this)[0].scrollHeight;
         nScrollTop = $(this)[0].scrollTop;
     var paddingBottom = parseInt( $(this).css('padding-bottom') ),paddingTop = parseInt( $(this).css('padding-top') );
         if(nScrollTop + paddingBottom + paddingTop + nDivHight >= nScrollHight)
           alert("       ");
         });
     });
     script>
   <body>
   <div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
     <div style="background-color:#ccc; height:750px;">IE   FF      div>
   div>
   body>
   html>

コード解説:内部divの高さは750、外部divの高さは500なので、垂直スクロールバーは750-500=250の距離をスクロールする必要があり、下部に達します.文nScrollTop+nDivHight>=nScrollHightを参照してください.プログラムでは,外部divのscroll(スクロール)イベントでif判定文を検出し実行することは,CPUリソースを非常に消費する.マウスでスクロールバーをドラッグすると、ピクセルの変動が1つあればイベントがトリガーされます.しかし、スクロールバーの両端の矢印をクリックすると、イベントがトリガーされる頻度はずっと低くなります.スクロールバーのscrollイベントは慎重に使用してください.この例では、水平スクロールバーがない場合、水平スクロールバーがある場合、状況は細かく変化するので、nScrollTop+nDivHight>=nScrollHight文では、演算子を">="で比較する必要があり、水平スクロールバーがない場合は、等号"="で十分です.実際にテストしてみてください.水平スクロールバーが頭までスクロールしたかどうかを判断することもできます.
三、jQueryスクロールバーが底部までデータをロードする msg_list_loading = false; $('.msg_list').on('scroll', function(){ if ( ! msg_list_loading ){ load_more_msg(); } }) function load_more_msg(){ var msg_list = $('.msg_list'); if (nScrollTop + paddingBottom + paddingTop + nDivHight >= nScrollHight ) { msg_list_loading = true; msg_list.append(' '); $.get('ajax_data.html').done(function( data ){ msg_list.find(".loading").remove(); msg_list.append( data ); msg_list_loading = false; }); } }
原文:https://www.cnblogs.com/linvan/p/6024675.html?utm_source=itdadao&utm_medium=referral