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 相关文章推荐
jquery.boxy插件的iframe扩展代码
Jul 02 Javascript
基于jQuery实现左右图片轮播(原理通用)
Dec 24 Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 Javascript
jQuery实现点击行选中或取消CheckBox的方法
Aug 01 Javascript
BooStrap对导航条的改造实践小结
Sep 21 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
Dec 05 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
原生js实现简单的焦点图效果实例
Dec 14 Javascript
js html实现计算器功能
Nov 13 Javascript
简单了解vue.js数组的常用操作
Jun 17 Javascript
leaflet加载geojson叠加显示功能代码
Feb 21 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
Nov 05 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处理整数函数的详解
2013/06/09 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
PHP常用的三种设计模式
2017/02/17 PHP
如何实现JS函数的重载
2006/09/22 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
javascript操作数组详解
2014/12/17 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
python操作redis数据库的三种方法
2020/09/10 Python
python 深度学习中的4种激活函数
2020/09/18 Python
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
函授本科自我鉴定
2013/11/03 职场文书
升国旗演讲稿
2014/09/05 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
公开致歉信
2019/06/24 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python