jQuery简单实现图片预加载


Posted in Javascript onApril 20, 2015

jQuery实现图片预加载

JS代码

$(function(){
   loadImg("http://d.hiphotos.baidu.com/image/pic/item/fd039245d688d43f14f69eff7f1ed21b0ef43b5b.jpg",addImg);
  function loadImg(url,callback){
    var img = new Image();
    img.onload = function(){
      img.onload = null;
      callback(img);
    }
    img.src=url;
    img.width ="202";
    img.height = "202";
    img.attr("defaulturl","../images/img.png");
    if(){}
  }
  function addImg(img){
    $(img).appendTo($(".imgload li"))
  }
})

HTML:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>图片预加载</title>
  <link rel="stylesheet" type="text/css" href="css/index.css">
  <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
  <script type="text/javascript" src="js/index.js"></script>
</head>
<body>
   
    <div class="imgload">
      <ul>
          <li class="fl"></li>
          <li class="fl"></li>
          <li class="fl"></li>
          <li class="fl"></li>
          <li class="fl"></li>
          <li class="fl"></li>
          <li class="fl"></li>
          <li class="fl"></li>
          <li class="fl"></li>
      </ul>
    </div>
</body>
</html>

其他实例

function loadimg(arr,funLoading,funOnLoad,funOnError){ 
  var numLoaded=0, 
  numError=0, 
  isObject=Object.prototype.toString.call(arr)==="[object Object]" ? true : false; 
  
  var arr=isObject ? arr.get() : arr; 
  for(a in arr){ 
    var src=isObject ? $(arr[a]).attr("data-src") : arr[a]; 
    preload(src,arr[a]); 
  } 
  
  function preload(src,obj){ 
    var img=new Image(); 
    img.onload=function(){ 
      numLoaded++; 
      funLoading && funLoading(numLoaded,arr.length,src,obj); 
      funOnLoad && numLoaded==arr.length && funOnLoad(numError); 
    }; 
    img.onerror=function(){ 
      numLoaded++; 
      numError++; 
      funOnError && funOnError(numLoaded,arr.length,src,obj); 
    } 
    img.src=src; 
  } 
  
}

参数说明:
  arr:可以是存放图片路径的一个数组,也可以是选取到的img的jquery对象;
  funLoading:每一个单独的图片加载完成后执行的操作;
  funOnLoad:全部图片都加载完成后的操作;
  funOnError:单个图片加载出错时的操作。

懒加载,

var imgonload=function(errors){ 
    /*errors:加载出错的图片数量;*/ 
  console.log("loaded,"+errors+" images loaded error!"); 
} 
  
var funloading=function(n,total,src,obj){ 
    /* 
    n:已加载完成的数量; 
    total:总共需加载的图片数量; 
    src:当前加载完成的图片路径; 
    obj:当loadimg函数中传入的arr为存放图片路径的数组时,obj=src,是图片路径, 
        当arr为jquery对象时,obj是当前加载完成的img dom对象。 
    */ 
  console.log(n+"of"+total+" pic loaded.",src); 
  var newimg = document.createElement("img"); 
  newimg.src=src; 
  $("body").append(newimg).fadeIn(); 
} 
  
var funloading_obj=function(n,total,src,obj){ 
  console.log(n+"of"+total+" pic loaded.",src); 
  $(obj).attr("src",src); 
  $(obj).fadeIn(200); 
} 
  
var funOnError=function(n,total,src,obj){ 
  console.log("the "+n+"st img loaded Error!"); 
}

调试用例

console.log("loading..."); 
loadimg($("img"),funloading_obj,imgonload,funOnError); 
/*loadimg(["http://pic22.nipic.com/20120619/9607634_212642465144_2.jpg", 
     "http://pic21.nipic.com/20120531/1670912_103610084349_2.jpg", 
     "http://pic21.nipic.com/20120616/4952071_130629530136_2.jpg", 
     "http://pic21.nipic.com/20120610/1723580_105037029000_2.jpg", 
     "http://pic22.nipic.com/20120617/2572038_125013326121_2.jpg" 
    ],funloading,imgonload,funOnError);*/

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
js 弹出菜单/窗口效果
Oct 30 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
Jun 20 Javascript
js每隔5分钟执行一次ajax请求的实现方法
Nov 27 Javascript
easyui Droppable组件实现放置特效
Aug 19 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
Jul 24 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
Oct 15 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
Nov 21 Javascript
javascript入门之数组[新手必看]
Nov 21 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
Mar 08 Javascript
JS实现页面打印(整体、局部)
Aug 18 Javascript
Vue两种组件类型:递归组件和动态组件的用法
Aug 06 Javascript
jquery滚动到顶部底部代码
Apr 20 #Javascript
浅谈javascript属性onresize
Apr 20 #Javascript
jquery代码实现简单的随机图片瀑布流效果
Apr 20 #Javascript
被遗忘的javascript的slice() 方法
Apr 20 #Javascript
JavaScript Window浏览器对象模型方法与属性汇总
Apr 20 #Javascript
分享10个原生JavaScript技巧
Apr 20 #Javascript
JQuery限制复选框checkbox可选中个数的方法
Apr 20 #Javascript
You might like
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php中神奇的fastcgi_finish_request
2011/05/02 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
Javascript动态绑定事件的简单实现代码
2010/12/25 Javascript
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
原生JS实现的轮播图功能详解
2018/08/06 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
Python实现迭代时使用索引的方法示例
2018/06/05 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
大数据分析用java还是Python
2020/07/06 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
介绍一下grep命令的使用
2012/06/28 面试题
人力资源主管的岗位职责
2014/03/15 职场文书
工程项目经理任命书
2014/06/05 职场文书
施工工地安全标语
2014/06/07 职场文书
小学生家长意见
2015/06/03 职场文书
公司仓库管理制度
2015/08/04 职场文书
导游词之临安白水涧
2019/11/05 职场文书