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 相关文章推荐
IE浏览器兼容Firefox的JS脚本的代码
Oct 23 Javascript
精通Javascript系列之数据类型 字符串
Jun 08 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
Nov 15 Javascript
js加入收藏以及使用Jquery更改透明度
Jan 26 Javascript
详解AngularJS验证、过滤器、指令
Jan 04 Javascript
原生js实现无限循环轮播图效果
Jan 20 Javascript
ajax分页效果(bootstrap模态框)
Jan 23 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
Jun 08 Javascript
详解Angular的8个主要构造块
Jun 20 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 Javascript
小程序实现点击tab切换左右滑动
Nov 16 Javascript
vue 在单页面应用里使用二级套嵌路由
Dec 19 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
php实现文件下载代码分享
2014/08/19 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
python numpy实现rolling滚动案例
2020/06/08 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
详解python中的lambda与sorted函数
2020/09/04 Python
Python pymsql模块的使用
2020/09/07 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
python爬虫工具例举说明
2020/11/30 Python
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
党员个人公开承诺书
2014/08/29 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
学习三严三实心得体会
2014/10/13 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
2019军训心得体会
2019/06/27 职场文书