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);
	}
});