zoukankan      html  css  js  c++  java
  • Jquery实现图片的预加载与延时加载

    有很多项目经常会需要判断图片加载完成后执行相应的操作,或者需要图片延迟加载,网上虽然已经有很不错的插件,但要为这些效果还得单独加载一个插件的话总感觉有点不舒服,干脆自己写了个方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    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:单个图片加载出错时的操作。

    如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    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);*/
  • 相关阅读:
    Windows Store App 主题动画
    Windows Store App 过渡动画
    Windows Store App 控件动画
    Windows Store App 近期访问列表
    Windows Store App 文件选取器
    Windows Store App 访问应用内部文件
    Windows Store App 用户库文件分组
    Windows Store App 获取文件及文件夹列表
    Windows Store App 用户库文件夹操作
    Windows Store App 用户库文件操作
  • 原文地址:https://www.cnblogs.com/3body/p/5416903.html
Copyright © 2011-2022 走看看