JS實(shí)現(xiàn)頁(yè)面數(shù)據(jù)懶加載
頁(yè)面數(shù)據(jù)懶加載。Div移動(dòng)到可視區(qū)域再去ajax加載內(nèi)容。
最近有需求做頁(yè)面的多個(gè)table用于加載數(shù)據(jù),但是用戶瀏覽頁(yè)面的時(shí)候不需要一次將頁(yè)面所有的東西加載出來(lái),比如頁(yè)面上3個(gè)table就占滿了,用戶點(diǎn)進(jìn)去第一眼也就只能看到3個(gè)。為了防止一次加載拖慢了頁(yè)面的速度,所以之后的table我們要懶加載。即該table移動(dòng)到了可視區(qū)域再去異步請(qǐng)求加載數(shù)據(jù)。
以下為目前實(shí)現(xiàn)的方法:
<!-- page lazyloading --> <script> $(function(){ // 設(shè)置布爾值用于判斷是否該DIV到達(dá)過(guò)可視區(qū)域 var scrollflaga = true; // 監(jiān)聽滾輪事件 $(window).scroll(function() { // 要加載的DIV的ID // 距離可視區(qū)域頂部的距離 var a = document.getElementById("myDiv").offsetTop; if (scrollflaga == true) { // 判斷 // $(window).scrollTop()為返回滾動(dòng)條的垂直位置 // $(window).height()代表了當(dāng)前可見區(qū)域的大小,即你看到的瀏覽器顯示范圍 if (a >= $(window).scrollTop() && a < ($(window).scrollTop()+$(window).height())) { // 如果到達(dá)了可視區(qū)域,則設(shè)置其布爾值為false,防止一直調(diào)用下面函數(shù),即只做一次ajax請(qǐng)求 scrollflaga = false; // 你的ajax請(qǐng)求函數(shù) loadingFunction(); } } } </script>
1、需要導(dǎo)入jquery文件
2、封裝的不是很好,對(duì)于多的要加載的數(shù)據(jù),比如有許多個(gè)div下的table要懶加載,就要設(shè)置對(duì)應(yīng)的多個(gè)布爾值用于判斷是否各個(gè)div是否加載,要申明個(gè)多變量(有多少個(gè)div就申明幾個(gè)對(duì)應(yīng)的變量)去獲取他們距離屏幕頂部的高度然后做判斷
3、目前使用的是該方法,有更好的方法的可以留言討論,如果我又發(fā)現(xiàn)了更好的方法會(huì)持續(xù)更新
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決JSON.parse轉(zhuǎn)化不規(guī)范json字符串的問(wèn)題
這篇文章主要介紹了解決JSON.parse轉(zhuǎn)化不規(guī)范json字符串的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09ES6中Set和Map數(shù)據(jù)結(jié)構(gòu),Map與其它數(shù)據(jù)結(jié)構(gòu)互相轉(zhuǎn)換操作實(shí)例詳解
這篇文章主要介紹了ES6中Set和Map數(shù)據(jù)結(jié)構(gòu),Map與其它數(shù)據(jù)結(jié)構(gòu)互相轉(zhuǎn)換操作,結(jié)合實(shí)例形式詳細(xì)分析了ES6中的Set和Map數(shù)據(jù)結(jié)構(gòu)的概念、原理、遍歷、去重等操作,以及Map與其它數(shù)據(jù)結(jié)構(gòu)互相轉(zhuǎn)換操作,需要的朋友可以參考下2019-02-02簡(jiǎn)單了解JavaScript中的執(zhí)行上下文和堆棧
這篇文章主要介紹了簡(jiǎn)單了解JavaScript中的執(zhí)行上下文和堆棧,你應(yīng)該對(duì)解釋器了解得更清楚:為什么在聲明它們之前可以使用某些函數(shù)或變量?以及它們的值是如何確定的?,需要的朋友可以參考下2019-06-06關(guān)閉頁(yè)面時(shí)window.location事件未執(zhí)行的原因分析及解決方案
最近在做一個(gè)項(xiàng)目的時(shí)候,遇到個(gè)問(wèn)題,就是關(guān)閉頁(yè)面時(shí)window.location事件未執(zhí)行,百思不得其解,度娘上搜了一下才知道具體原因,記錄一下2014-09-09JS庫(kù)中的Particles.js在vue上的運(yùn)用案例分析
這篇文章主要介紹了JS庫(kù)中的Particles.js在vue上的運(yùn)用案例分析,需要的朋友可以參考下2017-09-09關(guān)于動(dòng)態(tài)執(zhí)行代碼(js的Eval)實(shí)例詳解
下面小編就為大家?guī)?lái)一篇關(guān)于動(dòng)態(tài)執(zhí)行代碼(js的Eval)實(shí)例詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08(currentStyle)javascript為何有時(shí)用style得不到已設(shè)定的CSS的屬性
(currentStyle)javascript為何有時(shí)用style得不到已設(shè)定的CSS的屬性...2007-08-08JS獲取日期的方法實(shí)例【昨天,今天,明天,前n天,后n天的日期】
這篇文章主要介紹了JS獲取日期的方法,結(jié)合具體實(shí)例分析了javascript計(jì)算昨天,今天,明天,前n天,后n天日期及對(duì)應(yīng)的星期幾實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09JavaScript中 this 指向問(wèn)題深度解析
這篇文章主要介紹了JavaScript中 this 指向問(wèn)題深度解析,JavaScript 中的 this 指向問(wèn)題有很多文章在解釋,仍然有很多人問(wèn),本文給大家深度解析,需要的朋友可以參考下2017-02-02