简单的懒加载图片数据
来源:互联网 发布:e8票据打印软件 编辑:程序博客网 时间:2024/04/25 12:27
/******************************************** * 懒加载图片数据 * 作者: wangwenqing403@163.com * 时间: 2012-11-22 ********************************************/ var Lazyload = function (obj) { this.content = $(obj); this.min = $(document).scrollTop(); this.max = $(document).scrollTop() + $(window).height(); this.fnLoad = (function (object,handler) { return function () { return handler.apply(object, arguments); }; })(this, this.load); this.load(); $(window).bind('scroll', this.fnLoad) .bind('resize', this.fnLoad); }; Lazyload.prototype = { load: function () { var sT = $(document).scrollTop(), //滚动条高度 wH = $(window).height(), //窗口高度 cH = wH + sT, oLoad, top, bottom; if (this.check(sT, cH, wH)) return; this.img = $('img[data-img][lazy!=1]', this.content); if (this.loaded(1).length != this.img.length) { oLoad = this.loaded(0); $.each(oLoad, function () { top = $(this).offset().top; bottom = top + $(this).outerHeight(); if ((top > sT && top < cH) || (bottom > sT && bottom < cH)) { $(this).attr('lazy', 1) .attr('src', $(this).attr('data-img')); } }); } else this.endLoad(); }, loaded: function (status) { var arr = [], temp; status = !!status; this.img.each(function () { temp = !!$(this).attr('lazy'); if (status) { temp && arr.push($(this)); } else { temp || arr.push($(this)); } }); return arr; }, check: function (t, h, wh) { if (t > this.min && h < this.max) return true; if (t < this.min && Math.abs(this.min - t) <= wh) this.min = t; if (h > this.max && Math.abs(this.max - h) <= wh) this.max = h; return false; }, endLoad: function () { $(window).unbind('scroll', this.fnLoad) .unbind('resize', this.fnLoad); } };