JS(二十三)懒加载
来源:互联网 发布:淘宝网光威官方旗舰店 编辑:程序博客网 时间:2024/06/09 17:54
/* * jQuery plugin: Lazy ajax loader. * Updated: 2017.10.25 */(function ($, window) { if (!$.fn.LazyAjax) { /* * url: ajax 发送请求的地址 * param: 发送到服务器的JSON数据, 将转换为字符串格式。 * successFunc: 请求成功返回的回调函数。 * errorFunc: 请求出错时的回调函数。 */ $.fn.LazyAjax = function (url, param, successFunc, errorFunc) { var _self = $(this); /// 判断元素是否在窗口中 var insideWindow = function ($el) { var scrollTop = $(window).scrollTop(); var windowHeight = $(window).height(); return (scrollTop < $el.offset().top + $el.outerHeight() && scrollTop + windowHeight > $el.offset().top); }; /// 如果元素在窗口中且尚未载入数据则调用ajax载入数据 var loadElement = function () { _self.each(function () { if (insideWindow($(this))) { if (!$(this).attr('data-status') || $(this).attr('data-status') === 'failed') { var _this = $(this); $.ajax({ url: url, type: 'POST', contentType: 'application/json', dataType: 'json', data: JSON.stringify(param), beforeSend: function () { _this.attr('data-status', 'loading'); }, success: function (response) { if (response.result === 0) { _this.attr('data-status', 'loaded'); successFunc.call(this, response); } else { _this.attr('data-status', 'failed'); errorFunc.call(this); } }, error: function () { _this.attr('data-status', 'failed'); errorFunc.call(this); } }) } } }) }; var debounce = function (func, wait, immediate) { var timeout; return function () { var context = this, args = arguments; var later = function () { timeout = null; if (!immediate) { func.apply(context, args); } }; if (immediate && !timeout) { func.apply(context, args); } clearTimeout(timeout); timeout = setTimeout(later, wait); }; }; loadElement(); $(window) .on('scroll', debounce(loadElement, 300, !1)) .on('resize', debounce(loadElement, 300, !1)); }; }})(jQuery, window);
阅读全文
0 0
- JS(二十三)懒加载
- three.js 源码注释(二十三)Core/Face3.js
- node.js学习(二十三、mongodb命令)
- 东软实训(二十三)
- 日拱一卒(二十三)
- 软件工程(二十三)
- IOS学习之路二十三(EGOImageLoading异步加载图片开源框架使用)
- 十三周任务(二)
- 学习笔记(二十三)
- 笔记十三(绘制二)
- 设计模式--(二十三)
- 英语口语收集(二十三)
- python学习(二十三)
- JS(十三)文本框脚本
- Java面试准备二十三:Java类加载与初始化
- 【D3.js数据可视化系列教程】(二十三)--饼图圆环图
- 二十三
- 二十三
- 「POJ 3693」Maximum repetition substring
- 11月30日
- 用AudioBuffer里的数据得到音量
- servlet -> (1)
- indexOf和includes的区别
- JS(二十三)懒加载
- 运筹学(2)-牛顿法
- C语言指针入门(四)
- 解决Android项目Gradle's dependency cache may be corrupt问题
- SSO单点登录原理
- 读《茅屋为秋风所破歌》有感
- bzoj。 1007: [HNOI2008]水平可见直线
- WebView API指南
- docker:一次执行,多条命令