JS实现页面数据懒加载


Posted in Javascript onFebruary 13, 2020

页面数据懒加载。Div移动到可视区域再去ajax加载内容。

最近有需求做页面的多个table用于加载数据,但是用户浏览页面的时候不需要一次将页面所有的东西加载出来,比如页面上3个table就占满了,用户点进去第一眼也就只能看到3个。为了防止一次加载拖慢了页面的速度,所以之后的table我们要懒加载。即该table移动到了可视区域再去异步请求加载数据。

以下为目前实现的方法:

<!-- page lazyloading -->
<script>
$(function(){
  // 设置布尔值用于判断是否该DIV到达过可视区域
 var scrollflaga = true;
  // 监听滚轮事件
 $(window).scroll(function() {
  // 要加载的DIV的ID
  // 距离可视区域顶部的距离
 var a = document.getElementById("myDiv").offsetTop;
 if (scrollflaga == true) {
    // 判断
    // $(window).scrollTop()为返回滚动条的垂直位置
    // $(window).height()代表了当前可见区域的大小,即你看到的浏览器显示范围
   if (a >= $(window).scrollTop() && a < ($(window).scrollTop()+$(window).height())) {
      // 如果到达了可视区域,则设置其布尔值为false,防止一直调用下面函数,即只做一次ajax请求
     scrollflaga = false;
      // 你的ajax请求函数
     loadingFunction();
 }
  }
}
</script>

1、需要导入jquery文件

2、封装的不是很好,对于多的要加载的数据,比如有许多个div下的table要懒加载,就要设置对应的多个布尔值用于判断是否各个div是否加载,要申明个多变量(有多少个div就申明几个对应的变量)去获取他们距离屏幕顶部的高度然后做判断

3、目前使用的是该方法,有更好的方法的可以留言讨论,如果我又发现了更好的方法会持续更新

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
jQuery cdn使用介绍
May 08 Javascript
jQuery提交多个表单的小例子
Jun 30 Javascript
checkbox使用示例
Aug 23 Javascript
文本框只能选择数据到文本框禁止手动输入
Nov 22 Javascript
JavaScript使用cookie记录临时访客信息的方法
Apr 07 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
Nov 07 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
Feb 05 Javascript
微信小程序 参数传递实例代码
Mar 20 Javascript
jquery replace方法去空格
May 08 jQuery
详解webpack-dev-middleware 源码解读
Mar 23 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
Jul 23 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 #Javascript
原生JS与JQ获取元素的区别详解
Feb 13 #Javascript
node.js中path路径模块的使用方法实例分析
Feb 13 #Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 #Javascript
JavaScript 中的无穷数(Infinity)详解
Feb 13 #Javascript
node.js使用stream模块实现自定义流示例
Feb 13 #Javascript
Vue export import 导入导出的多种方式与区别介绍
Feb 12 #Javascript
You might like
第十四节 命名空间 [14]
2006/10/09 PHP
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
php图片缩放实现方法
2014/02/20 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
JS event使用方法详解
2008/04/28 Javascript
JavaScript 学习笔记(四)
2009/12/31 Javascript
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
细说webpack6 Babel的使用详解
2019/09/26 Javascript
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
Python线程详解
2015/06/24 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
python如何实现DES加密
2020/09/21 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
人事专员工作职责
2014/02/22 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
大学生受助感言
2015/08/01 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
浅谈Python协程asyncio
2021/06/20 Python
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang