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简单实现根据身份证号码识别性别年龄生日
Nov 29 Javascript
js捕获鼠标滚轮事件代码
Dec 16 Javascript
JS实现文件动态顺序载入的方法
Mar 07 Javascript
jQuery检测某个元素是否存在代码分享
Jul 09 Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
Jun 23 Javascript
springMVC结合AjaxForm上传文件
Jul 12 Javascript
jQuery实现的图片轮播效果完整示例
Sep 12 Javascript
AngularJS实现使用路由切换视图的方法
Jan 24 Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 Javascript
关于jquery layui弹出层的使用方法
Apr 21 jQuery
微信小程序实现弹出菜单功能
Jun 12 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 分页类实现代码
2009/12/03 PHP
Codeigniter的一些优秀特性总结
2015/01/21 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
python线程锁(thread)学习示例
2013/12/04 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python 多线程实例详解
2017/03/25 Python
理解python中生成器用法
2017/12/20 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
pyhton列表转换为数组的实例
2018/04/04 Python
python版本的仿windows计划任务工具
2018/04/30 Python
对pandas中Series的map函数详解
2018/07/25 Python
Django的CVB实例详解
2020/02/10 Python
入党综合考察材料
2014/06/02 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
教师个人考察材料
2014/12/16 职场文书
中标通知书范本
2015/04/17 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang