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写的一个链表实现代码
Oct 25 Javascript
jQuery 数据缓存模块进化史详细介绍
Nov 19 Javascript
javascript右下角弹层及自动隐藏(自己编写)
Nov 20 Javascript
jQuery文件上传插件Uploadify使用指南
Jun 05 Javascript
node.js中使用q.js实现api的promise化
Sep 17 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
Javascript核心读书有感之词法结构
Feb 01 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
Sep 26 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
Oct 26 Javascript
脚手架vue-cli工程webpack的作用和特点
Sep 29 Javascript
node中使用es6/7/8(支持性与性能)
Mar 28 Javascript
在小程序中推送模板消息的实现方法
Jul 22 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
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
php学习笔记之面向对象
2014/11/08 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
php图像处理类实例
2015/07/28 PHP
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
jquery判断单选按钮radio是否选中的方法
2015/05/05 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
小程序实现多选框功能
2018/10/30 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
使用cx_freeze把python打包exe示例
2014/01/24 Python
用Python给文本创立向量空间模型的教程
2015/04/23 Python
python中set()函数简介及实例解析
2018/01/09 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
python+pyqt5编写md5生成器
2019/03/18 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
先进工作者获奖感言
2014/02/08 职场文书
建议书的格式
2014/05/12 职场文书
个人查摆剖析材料
2014/10/16 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python