闭包,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实现图片预加载效果 本篇文章写的 ...
随机推荐
- 避免jquery的click多次绑定方法
$("#xxx").click(function(){}) 这样只是会在原click方法中继续添加新方法: 当然解决办法是解绑: $("#xxx").unbin ...
- centos 7 linux系统默认ftp安装配置和部署(详细讲解)
小生接触 Linux 系统时间不长,想解决linux系统ftp安装及部署问题,折腾了大半天,终于弄出来了,将各路高手的配置方法综合了一下,如有不对之处,欢迎各位看客指正,感谢! 一.声明: 本文采用操 ...
- 【原创】Github团队协作之Pull请求
首先声明:Github上关于代码团队协作方式有很多种,这里只讲述Github上其中的一种代码团队协作方式. Pull请求(Pull request) 1 综述 协作者通过fork一个新的代 ...
- jquery的jsonp的使用
客户端 $(function(){ $.ajax({ type: "get", async: false, url: "http://test.com/json_data ...
- 容器概念与Linux Container原理
一.容器与LxC 在像KVM等众多主机虚拟化解决方案中,对每一个虚拟机实例提供的是从底层硬件开始一直到上层的环境,在硬件级进行资源划分.虚拟机的内核是运行在硬件内核之上的.由于每个虚拟实例都有自己的运 ...
- spring boot(三) 集成mybatis
前言 还记得之前我们写接口也是基于SpringMVC+MyBatis环境下,项目入手就需要N个配置文件,N个步骤才能实现,不但繁琐,而且时间长了xml配置文件太多,难以维护.现在基于spring bo ...
- MySQL系列详解一:MySQL&&多实例安装-技术流ken
简介 MySQL是一个真正的多用户.多线程SQL数据库服务器.SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言,它使得存储.更新和存取信息更加容易.MySQL是一个客户机/服务器结构的实现 ...
- 【golang-GUI开发】Qt项目的打包发布
这是本系列的第三篇文章,前两篇我们讲了qt的安装和编译,今天我们讲一讲程序的打包. 好像我们现在都没怎么讲到qt的使用,因为想要放开手脚写代码,一些基础是要打牢的. 不过请放心,下一篇文章开始我们就会 ...
- [转]C# serialPort 串口接收中this.Invoke的使用
本文转自:https://blog.csdn.net/hjk216/article/details/72677596 转载地址:http://www.ciast.net/post/20160752.h ...
- C# XML入门
什么是XML? XML:可扩展标记语言. XML的作用: 纯文本,兼容性强. 和HTML的区别: xml: 主要用来处理.存储数据.无规定标签,可扩展. html:对数据的显示和描述. 语法标签固定. ...