原理前几篇文章都说过了,以下是修改后的代码:
var lazyLoad = {
// / <summary> // / img标签中的存放图片路径的自定义属性名称 // / </summary> AttributeName: "lazyload", // / <summary> // / 判断一张图片是否在当前屏幕中,是否需要显示 // / </summary> IsShow: function ($img) { // 获取窗体的高度 var windowHeight = $(window).height(); var scrollTop = $(document).scrollTop(); var _scrollTop = $img.offset().top - windowHeight; if (parseInt(scrollTop) >= parseInt(_scrollTop)) { return true; } return false; }, // / <summary> // / 当scroll事件被触发时,进行加载图片的操作 // / </summary> LoadImage: function () { var _this = this; // 如果页面中有需要延迟加载的图片执行 $("img[" + this.AttributeName + "]").show(); if ($("img[" + this.AttributeName + "]").size() > 0) { // 显示当前屏幕中的图片 // 循环所有延迟加载图片,判断高度,如果在当前屏幕则显示 $("img[" + this.AttributeName + "]").each( function () { if (_this.IsShow($( this))) { $( this).hide(); var src = $( this).attr(_this.AttributeName); $( this).attr("src", src); $( this).removeAttr(_this.AttributeName); $( this).fadeTo(700, 1); } }); } $("img[" + this.AttributeName + "]").hide(); }, // / <summary> // / 启动延时加载 // / <params key="v">img标签中的存放图片路径的自定义属性名称</params> // / </summary> Run: function (v) { if (v != undefined && v != null && typeof (v) == "string") { this.AttributeName = v; } this.LoadImage(); var _this = this; if ($("img[" + this.AttributeName + "]").size() > 0) { $(window).bind("scroll", function () { _this.LoadImage(); }); } } };