www.gusucode.com > 200套html5精品模板51_75 > 071/js/jquery.preloader.js
jQuery(function($) { $.fn.preloader = function(options) { var preloadimg = 'img/preload_img.gif'; var defaults = { delay : 200, preload_parent : "a", check_timer : 300, ondone : function() { }, oneachload : function(image) { }, fadein : 500 }; // variables declaration and precaching images and parent container var options = $.extend(defaults, options), root = $(this), images = root.find("img").css({ "visibility" : "hidden", opacity : 0 }), timer, counter = 0, i = 0, checkFlag = [], delaySum = options.delay, init = function() { timer = setInterval(function() { if (counter >= checkFlag.length) { clearInterval(timer); options.ondone(); return; } for ( i = 0; i < images.length; i++) { if (images[i].complete == true) { if (checkFlag[i] == false) { checkFlag[i] = true; options.oneachload(images[i]); counter++; delaySum = delaySum + options.delay; } $(images[i]).css("visibility", "visible").delay(delaySum).animate({ opacity : 1 }, options.fadein, function() { $(this).parent().removeClass("preloader"); }); } } }, options.check_timer) }; images.each(function() { if ($(this).parent(options.preload_parent).length == 0) $(this).wrap("<a class='preloader' />"); else $(this).parent().addClass("preloader"); checkFlag[i++] = false; }); images = $.makeArray(images); var icon = jQuery("<img />", { id : 'loadingicon', src : preloadimg }).hide().appendTo("body"); timer = setInterval(function() { if (icon[0].complete == true) { clearInterval(timer); init(); icon.remove(); return; } }, 100); } });