闭包,jQuery插件的写法:图片预加载
最近做的一些网页,单个网页图片量都比较大,网络不好的情况下,特别卡,这个图片预加载的方法可以牺牲一些时间换来网页的浏览顺畅,还是值得的。
//可以使用jQuery的$符号的闭包插件的写法:
//写插件的常用方法 $.extentd() (function ($){
//构造函数
function PreLoad(imgs,options){
this.imgs = (typeOf === 'string') ? [imgs] : imgs;
//生成一个新的对象,将后一个覆盖前一个返回一个新对象
this.opts = $.extend({},PreLoad.DEFAULTS, options); //无序加载方法,方法加下划线表明这个方法只在内部使用
this._unoredered(); }
//定义默认参数,如果没有传过来参数,可以使用
PreLoad.DEFAULTS = {
each: null, //方法,每一张加载完毕后执行
all: null //所有图片加载完毕后执行
} //面向对象的方法都写在原型上,可以比较方法的实例化
PreLoad.prototype._unoredered = function(){
//无序加载 var imgs = this.imgs,
opts = this.opts,
count = 0,
len = imgs.lenght; $.each(imgs, function(i,src){
//判断src是否为字符串,如果不是,就直接返回
if(typeof src != 'string') return;
var imgObj = new Images(); //load 全部加载完 error 有发生错误时
$(imgObj).on('load error',function(){
//判断 opts是否存在,每一次加载的图片数量 count
opts.each && opts.each(count); if(count >= len - 1){
//如果 opts.all存在就去执行它
opts.all && opts.all();
}
count ++;
});
//把src给img对象中的src赋值
imgObj.src = src;
});
}; //上面是插件中的方法已经写完了,下面是怎么把上面的方法变为一个可用的插件
//调用方法一般有两种
//附在$.fn后面
//$.fn.extend -> $('#id').preload();
//另一种是跟在jQuery对象上的,它的形式就是个工具函数,常用的也是这种工具函数
//$.extend -> $.preload();
//这个插件按标准来应该这样写 $.extend({
//插件名称及传递的参数,这样这个插件就完写了
preload: function(imgs, opts){
//实例化构造函数,并将参数传递进来
new PreLoad(imgs, opts);
}
});
})(jQuery);</script>
如何使用它呢?
//调用这个插件
<script>
var = imgs = [
'1.jpg',
'2.png',
'3.jpg'
]; //给插件传递参数,一个为数组,另一个为一个参数列表
$.preload(imgs, {
//每加载完一张图片之后执行的方法
each: function(count){
//每一次都需要更新一次加载进度
$progress.html(Math.round((count + 1) / len * 100 + '%');
},
//所有图片加载完毕后执行的方法
all: function(){
//loading 隐藏,另,加载的图片数量显示
$('.loading').hide();
document.title = '1/' + len;
}
})
</script>
可以直接拿来用!
闭包,jQuery插件的写法:图片预加载的更多相关文章
- jquery.imgpreload.min.js插件实现页面图片预加载
页面分享地址: http://wenku.baidu.com/link?url=_-G8miwbgDmEj6miyFtjit1duJggBCJmFjR2jky_G1VftD9eS9kwGOlFWAOR ...
- 图片预加载的插件使用-jquery.imgpreload.min.js
使用方法: //图片预加载 var the_images = [];//新建一个数组,然后将要加载的图片地址推入这个数组中: the_images.push( 'bg.jpg' ); var load ...
- 【JQuery Zepto插件】图片预加载
屏幕滚动到图片当前位置加载图片,把图片的真实地址写到data-src属性里即可. <img src="占位图" data-src="img/foot.jpg&quo ...
- JQ封装图片预加载插件
我们知道,图片的加载,特别是资源较大的图片,加载相当耗费时间.为了提高用户体验,不得不使用图片预加载技术来提前加载,以提高用户在浏览时的流畅度. 先来弄明白图片的懒加载和预加载的不同: 1)概念:懒加 ...
- 转载:用Jquery实现的图片预加载技术,可以实现有序加载和无序加载!
一.背景 我们在做页面的时候,从用户体验的角度出发,肯定是希望用户以最快的速度看到完整的页面信息,但在实际情况中经常会遇到些问题. 比如受网速影响,页面加载素材的时间比较长,页面会出现短时间的错乱或者 ...
- 图片预加载插件 preLoad.js
1.preLoad.js插件 /*! * preLoad.js v1.0 * (c) 2017 Meng Fangui * Released under the MIT License. */ (fu ...
- jquery实现图片预加载
使用jquery实现图片预加载提高页面加载速度和用户体,本就为大家详细分析jquery图片预加载的实现原理. 什么时候使用图片预加载? 如果页面使用了很多不是最初加载便可见的图片,有必要进行预加载: ...
- jquery实现图片预加载提高页面加载速度
使用jquery实现图片预加载提高页面加载速度和用户体 我们在做网站的时候经常会遇到这样的问题:一个页面有大量的图片导致页面加载速度缓慢,经常会出现一个白页用户体验很不好.那么如何解决这个问题 呢?首 ...
- js 函数的多图片预加载(preload) 带插件版完整解析
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS实现图片预加载效果 本篇文章写的 ...
随机推荐
- php安装xunserch
xunserch的安装步骤 注意:xunserch只能在linux下使用 1.安装依赖工具 yum install make gcc g++ gcc-c++ libtool autoconf auto ...
- mysql 开发基础系列18 存储过程和函数(下)
1. 光标的使用(游标) 在存储过程和函数中可以使用光标对结果集进行循环的处理,光标使用包括光标的声明,open ,fetch,close. 下面在存储过程中使用一个光标, 这个举例中光标里的逻辑不重 ...
- [疑难杂症]__当你的Cortana搜索无法使用,显示纯白界面(ps:已解决).
前言 这个问题是在前不久解决关于我电脑点击屏幕上方快捷方式不久后出现的问题,之前并没有出现过这样的错误,但因为使用到的情况比较少,就一直没有去解决,但在一点时间后,发现没有Cortana搜索栏还是十分 ...
- 项目ITP(五) spring4.0 整合 Quartz 实现任务调度
前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用.然后需要的是 上课前20分钟 ,幸好在帮带我的学长做 p2p 的时候,接触过.自然 quartz 是首选.所以我就配置了 ...
- C#系列之聊聊.Net Core的InMemoryCache
作者:暴王 个人博客:http://www.boydwang.com/2017/12/net-core-in-memory-cache/ 这两天在看.net core的in memory cache, ...
- linux平均负载的理解及原因排查
当系统响应缓慢时,一般会用top或uptime命令查看系统负载是否过高. 例如输入uptime命令显示如下图,其中23:47:19表示现在的时间,up 260 days,14:39表示系统运行了多久, ...
- OJ:一道考察多态的题目
Description 下面程序的输出结果是: A::Fun C::Do 程序代码 #include <iostream> using namespace std; class A { p ...
- Font Awesome 供更精准的图标搜索
https://www.thinkcmf.com/font/font_awesome/icon/address-book
- [PHP] 算法-将一个字符串转换成一个整数的PHP实现
题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一 ...
- [PHP]算法-旋转数组的最小值的PHP实现
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组 ...