jQuery判斷網(wǎng)頁(yè)是否已經(jīng)滾動(dòng)到瀏覽器底部的實(shí)現(xiàn)方法
有些需求中,需要當(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)條到左邊的水平距離
通過上面的知識(shí)點(diǎn),可以知道:瀏覽器顯示區(qū)域的高度+垂直滾動(dòng)條距離頂部距離<=網(wǎng)頁(yè)的高度。
有了這個(gè)結(jié)論,那么實(shí)現(xiàn)起來就容易了。下面的代碼實(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)過筆者的測(cè)試,在IE7、8、9、11上都沒有問題。
接下來筆者把上面的代碼封裝為一個(gè)插件。
(function ($) {
//backcall是回調(diào)函數(shù),count表示回調(diào)函數(shù)被執(zhí)行的次數(shù),count只有在元素通過滾動(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);
然后讀者在引入上面的插件文件后,就可以通過類似于下面的代碼調(diào)用了。
$("#div").inBottom(function(){
alert("我被回調(diào)了");
},1);
總結(jié)
以上所述是小編給大家介紹的jQuery判斷網(wǎng)頁(yè)是否已經(jīng)滾動(dòng)到瀏覽器底部的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
JQuery實(shí)現(xiàn)的在新窗口打開鏈接的方法小結(jié)
jQuery 實(shí)現(xiàn)在新窗口中打開鏈接方法,收集了幾個(gè),大家可以根據(jù)需要選擇使用。2010-04-04
jQuery實(shí)現(xiàn)可高亮顯示的二級(jí)CSS菜單效果
這篇文章主要介紹了jQuery實(shí)現(xiàn)可高亮顯示的二級(jí)CSS菜單效果,涉及基本的jquery鼠標(biāo)事件及頁(yè)面元素樣式動(dòng)態(tài)改變技巧,需要的朋友可以參考下2015-09-09
基于jQuery的判斷iPad、iPhone、Android是橫屏還是豎屏的代碼
在ipad、iphone網(wǎng)頁(yè)開發(fā)中,我們很可能需要判斷是橫屏或者豎屏。下面就來介紹如何用 jQuery 判斷iPad、iPhone、Android是橫屏還是豎屏的方法2014-05-05
jQuery實(shí)現(xiàn)的卷簾門滑入滑出效果【案例】
這篇文章主要介紹了jQuery實(shí)現(xiàn)的卷簾門滑入滑出效果,結(jié)合具體實(shí)例形式分析了jQuery事件綁定及slideToggle方法實(shí)現(xiàn)滑入滑出效果相關(guān)操作技巧,需要的朋友可以參考下2019-02-02
firefox瀏覽器用jquery.uploadify插件上傳時(shí)報(bào)HTTP 302錯(cuò)誤
這篇文章主要介紹了firefox瀏覽器用jquery.uploadify插件上傳時(shí)報(bào)HTTP 302錯(cuò)誤,分析了下,原來是利用flash進(jìn)行post上傳時(shí)沒有包含原來的session信息,而是重新創(chuàng)建了一個(gè)session,知道原因了,我們來看看如何解決吧。2015-03-03
checkbox全選/取消全選以及checkbox遍歷jQuery實(shí)現(xiàn)代碼
checkbox全選/取消全選以及checkbox遍歷jQuery實(shí)現(xiàn)代碼2009-12-12
jQuery插件zepto.js簡(jiǎn)單實(shí)現(xiàn)tab切換
這篇文章主要介紹了jQuery插件zepto.js簡(jiǎn)單實(shí)現(xiàn)tab切換的代碼,十分的簡(jiǎn)潔,有需要的小伙伴可以參考下2015-06-06

