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 相关文章推荐
javascript 页面划词搜索JS
Sep 28 Javascript
jQuery Clone Bug解决代码
Dec 22 Javascript
Javascript this 的一些学习总结
Aug 31 Javascript
node.js中的fs.readFileSync方法使用说明
Dec 15 Javascript
JS实现n秒后自动跳转的两种方法
Nov 30 Javascript
Javascript自定义事件详解
Jan 13 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
Sep 16 Javascript
vue中使用element组件时事件想要传递其他参数的问题
Sep 18 Javascript
JS中比较两个Object数组是否相等方法实例
Nov 11 Javascript
Vue记住滚动条和实现下拉加载的完美方法
Jul 31 Javascript
vscode 调试 node.js的方法步骤
Sep 15 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文件上传表单摘自drupal的代码
2011/02/15 PHP
php skymvc 一款轻量、简单的php
2011/06/28 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
php实现网页端验证码功能
2017/07/11 PHP
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
Jquery性能优化详解
2014/05/15 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
全面理解闭包机制
2016/07/11 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
python三元运算符实现方法
2013/12/17 Python
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
Css3圆角边框制作代码
2015/11/18 HTML / CSS
个人求职简历的自我评价范文
2013/10/09 职场文书
企划专员岗位职责
2013/12/09 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
聚美优品的广告词
2014/03/14 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
电气自动化求职信
2014/06/24 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
二年级学生期末评语
2014/12/26 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript