溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

jQuery怎么判斷網(wǎng)頁(yè)是否已經(jīng)滾動(dòng)到瀏覽器底部

發(fā)布時(shí)間:2021-07-08 14:51:55 來(lái)源:億速云 閱讀:150 作者:小新 欄目:web開發(fā)

這篇文章主要介紹jQuery怎么判斷網(wǎng)頁(yè)是否已經(jīng)滾動(dòng)到瀏覽器底部,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

有些需求中,需要當(dāng)用戶滾動(dòng)到瀏覽器底部的時(shí)候,再加載新的內(nèi)容。筆者在這里介紹如何使用Jquery判斷用戶是否已經(jīng)瀏覽到網(wǎng)頁(yè)的底部了。

在了解下面的知識(shí)點(diǎn)之前,筆者這里先介紹幾個(gè)概念。

$(window).height(); //用于獲取瀏覽器顯示區(qū)域的高度

$(window).width(); //用于獲取瀏覽器顯示區(qū)域的寬度

$(document.body).height(); //獲取頁(yè)面文檔的高度

$(document.body).width(); //獲取頁(yè)面文檔的寬度

$(document).scrollTop(); //獲取垂直滾動(dòng)條到頂部的垂直距離

$(document).scrollLeft(); //獲取水平滾動(dòng)條到左邊的水平距離

通過(guò)上面的知識(shí)點(diǎn),可以知道:瀏覽器顯示區(qū)域的高度+垂直滾動(dòng)條距離頂部距離<=網(wǎng)頁(yè)的高度。

有了這個(gè)結(jié)論,那么實(shí)現(xiàn)起來(lái)就容易了。下面的代碼實(shí)現(xiàn)了,判斷用戶是否瀏覽到了網(wǎng)頁(yè)的底部。

 $(window).scroll(function(){
 var h=$(document.body).height();//網(wǎng)頁(yè)文檔的高度
 var c = $(document).scrollTop();//滾動(dòng)條距離網(wǎng)頁(yè)頂部的高度
 var wh = $(window).height(); //頁(yè)面可視化區(qū)域高度

 if (Math.ceil(wh+c)>=h){
  alert("我已經(jīng)到底部啦");
 }
 })

如果需要判斷用戶是否已經(jīng)瀏覽到某個(gè)元素的話,那么只需要把上面的網(wǎng)頁(yè)文檔高度,換成某一個(gè)元素距離網(wǎng)頁(yè)頂部的距離就可以了。例如: 

 $(window).scroll(function(){
 var h=$("#div").offset().top;//id為div的元素距離網(wǎng)頁(yè)頂部的距離
 var c = $(document).scrollTop();//滾動(dòng)條距離網(wǎng)頁(yè)頂部的高度
 var wh = $(window).height(); //頁(yè)面可視化區(qū)域高度

 if (Math.ceil(wh+c)>=h){
  alert("我已經(jīng)到底部啦");
 }
 })

在這里讀者需要注意,判斷條件中,wh+c取得是滿足大于等于該數(shù)字的最小整數(shù)。經(jīng)過(guò)筆者的測(cè)試,在IE7、8、9、11上都沒(méi)有問(wèn)題。

接下來(lái)筆者把上面的代碼封裝為一個(gè)插件。

(function ($) {
  //backcall是回調(diào)函數(shù),count表示回調(diào)函數(shù)被執(zhí)行的次數(shù),count只有在元素通過(guò)滾動(dòng)條滑出的時(shí)候才起作用
 $.fn.inBottom = function (backcall){
 //判斷當(dāng)前元素是否在目前屏幕可視化區(qū)域之內(nèi)
 if(this.offset().top >= $(window).height()){
 this.inScroll(backcall,count);
 }else{
 this.inWindow(backcall);
 }
 };
 //直接加載回調(diào)函數(shù)
 $.fn.inWindow = function (backcall){
 backcall();
 };
 //滾動(dòng)監(jiān)聽滑動(dòng)條,元素滾動(dòng)到屏幕底部的時(shí)候,加載回調(diào)函數(shù)
 $.fn.inScroll = function (backcall,count) {
  var $this=this;
 $(window).scroll(function(){
 //獲得這個(gè)元素到文檔頂部的距離
 var awayDocTop=$this.offset().top;
 //獲得滾動(dòng)條的top
 var sTop=$(document).scrollTop();
 //獲得可視化窗口的高度
 var wh=$(window).height();
  if(Math.ceil(wh+sTop)>=awayDocTop){
  if(count>0){
  backcall();
  count--;
  }
 };
 });
 };
})(jQuery);

然后讀者在引入上面的插件文件后,就可以通過(guò)類似于下面的代碼調(diào)用了。

$("#div").inBottom(function(){
 alert("我被回調(diào)了");
},1);

以上是“jQuery怎么判斷網(wǎng)頁(yè)是否已經(jīng)滾動(dòng)到瀏覽器底部”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI