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中使用Math.floor()方法对数字取整
Jun 15 Javascript
详解AngularJS Filter(过滤器)用法
Dec 28 Javascript
基于jQuery实现select下拉选择可输入附源码下载
Feb 03 Javascript
简单理解JavaScript中的封装与继承特性
Mar 19 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
Jan 24 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 Javascript
通过命令行生成vue项目框架的方法
Jul 12 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
Webpack4 使用Babel处理ES6语法的方法示例
Mar 07 Javascript
layui使用表格渲染获取行数据的例子
Sep 13 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
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
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
必须收藏的php实用代码片段
2016/02/02 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
新手入门常用代码集锦
2007/01/11 Javascript
FireFox中textNode分片的问题
2007/04/10 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
使用python实现个性化词云的方法
2017/06/16 Python
python连接数据库的方法
2017/10/19 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
django 多数据库及分库实现方式
2020/04/01 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
法国家具及室内配件店:home24
2017/01/21 全球购物
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
阿巴庭院:Abba Patio
2019/06/18 全球购物
出纳岗位职责
2013/11/09 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
妇联主席先进事迹
2014/05/18 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
法院答辩状格式
2015/05/22 职场文书