闭包,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实现图片预加载效果 本篇文章写的 ...
随机推荐
- [P5162] WD与积木
每种堆法(理解成名次序列,举例3,3,8,2和7,7,100,2都对应2,2,1,3这个名次序列)等概率出现:题目中"两种堆法不同当且仅当某个积木在两种堆法中处于不同的层中"可见这 ...
- Abp + MongoDb 改造默认的审计日志存储位置
一.背景 在实际项目的开发当中,使用 Abp Zero 自带的审计日志功能写入效率比较低.其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起.所以我们可以重新实现 Abp 的 IAuditi ...
- ML - 特征选择
1. 决策树中的特征选择 分类决策树是一种描述对实例进行分类的树型结构,决策树学习本质上就是从训练数据集中归纳出一组分类规则,而二叉决策树类似于if-else规则.决策树的构建也是非常的简单,首先依据 ...
- Centos7使用docker搭建gitlab服务器
了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux rele ...
- 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装OpenCV(离线方式和在线方式)(图文详解)
不多说,直接上干货! 说明: Anaconda2-5.0.0-Windows-x86_64.exe安装下来,默认的Python2.7 Anaconda3-4.2.0-Windows-x86_64.ex ...
- Shell脚本-自动化部署WEB
#! /bin/ ] then echo "#### 参数有误,\$1:构建号必填" exit fi cd /root/workspace/xinya_erp/xinya_web ...
- Perl文件名通配和文件查找
在shell中使用*来对文件名进行通配扩展,在Perl中也同样支持文件名通配.而且perl中的glob通配方式和shell的通配方式完全一致,实际上perl的glob函数就是直接调用csh来通配的(如 ...
- [JavaScript] 前端模块加载简单实现(require)
模块加载的简单实现 (function(win) { var baseUrl; var paths; var script_cache = {}; var script_queue = []; var ...
- IE的浏览器模式、文本模式
最近在部署网页的时候,发现IE下的布局完成混乱. 在改变IE的文本模式后,显示就正常了. IE的浏览器模式,用于切换IE针对该网页的默认文本模式.对不同版本浏览器的条件注释解析.决定请求头里userA ...
- WCF、WebAPI、WCFREST、WebService之间的区别【转载】
在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Services.我分享一下我对 ...