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 相关文章推荐
innerText和innerHTML 一些问题分析
May 18 Javascript
JavaScript继承方式实例
Oct 29 Javascript
再次分享18个非常棒的jQuery表格插件
Apr 10 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
Dec 23 Javascript
js控制多图左右滚动切换效果代码分享
Aug 26 Javascript
javascript 利用arguments实现可变长参数
Nov 21 Javascript
loading动画特效小结
Jan 22 Javascript
React学习之JSX与react事件实例分析
Jan 06 Javascript
JavaScript实现简单的图片切换功能(实例代码)
Apr 10 Javascript
JavaScript find()方法及返回数据实例
Apr 30 Javascript
Javascript实现简易天数计算器
May 18 Javascript
Vue页面跳转传递参数及接收方式
Sep 09 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语法(2)
2006/10/09 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python设置值及NaN值处理方法
2018/07/03 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
预备党员思想汇报范文
2013/12/29 职场文书
大学开学计划书
2014/04/30 职场文书
慈善晚会策划方案
2014/05/14 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
Python列表的索引与切片
2022/04/07 Python
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript