jQuery檢測捲軸(scroll)是否到達底部

來源:互聯網
上載者:User

標籤:語句   點擊   content   title   read   html   head   list   樣本   

一、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的高度750px。而scrollTop表示捲軸(一個點)當前的位置在750px裡佔了多少。

判斷垂直捲軸是否到達底部

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <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資源的。用滑鼠拖拉捲軸,只要有一個像素的變動就會觸發該事件。但點擊捲軸兩頭的箭頭,事件觸發的頻率會低得多。所以捲軸的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(‘<div class="loading"></div>‘);            $.get(‘ajax_data.html‘).done(function( data ){                 msg_list.find(".loading").remove();                msg_list.append( data );                msg_list_loading = false;            });                    }     } 

 

jQuery檢測捲軸(scroll)是否到達底部

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.