jquery.js

来自「C#语言制作asp.net网上商店的」· JavaScript 代码 · 共 1,518 行 · 第 1/3 页

JS
1,518
字号
				// If either one are found, remove the timer				clearInterval( jQuery.safariTimer );				jQuery.safariTimer = null;					// and execute any waiting functions				jQuery.ready();			}		}, 10);	}		// A fallback to window.onload, that will always work	jQuery.event.add( window, "load", jQuery.ready );	})();// overwrite the old show methodjQuery.prototype._show = jQuery.prototype.show;/** * The effects module overloads the show method to now allow  * for a speed to the show operation. What actually happens is  * that the height, width, and opacity to the matched elements  * are changed dynamically. The only three current speeds are  * "slow", "normal", and "fast". For example: *   $("p").show("slow"); * Note: You should not run the show method on things  * that are already shown. This can be circumvented by doing this: *   $("p:hidden").show("slow"); */jQuery.prototype.show = function(speed,callback){	return speed ? this.animate({		height: "show", width: "show", opacity: "show"	}, speed, callback) : this._show();};// We're overwriting the old hide methodjQuery.prototype._hide = jQuery.prototype.hide;/** * The hide function behaves very similary to the show function,  * but is just the opposite. *   $("p:visible").hide("slow"); */jQuery.prototype.hide = function(speed,callback){	return speed ? this.animate({		height: "hide",		width: "hide",		opacity: "hide"	}, speed, callback) : this._hide();};/** * This function increases the height and opacity for all matched  * elements. This is very similar to 'show', but does not change  * the width - creating a neat sliding effect. *   $("p:hidden").slideDown("slow"); */jQuery.prototype.slideDown = function(speed,callback){	return this.animate({height: "show"}, speed, callback);};/** * Just like slideDown, only it hides all matched elements. *   $("p:visible").slideUp("slow"); */jQuery.prototype.slideUp = function(speed,callback){	return this.animate({height: "hide"}, speed, callback);};/** * Adjusts the opacity of all matched elements from a hidden,  * to a fully visible, state. *   $("p:hidden").fadeIn("slow"); */jQuery.prototype.fadeIn = function(speed,callback){	return this.animate({opacity: "show"}, speed, callback);};/** * Same as fadeIn, but transitions from a visible, to a hidden state. *   $("p:visible").fadeOut("slow"); */jQuery.prototype.fadeOut = function(speed,callback){	return this.animate({opacity: "hide"}, speed, callback);};/** * ... */jQuery.prototype.fadeTo = function(speed,to,callback){	return this.animate({opacity: to}, speed, callback);};/** * */jQuery.prototype.animate = function(prop,speed,callback) {	return this.queue(function(){		var i = 0;		for ( var p in prop ) {			var e = new jQuery.fx( this, jQuery.speed(speed,callback,i++), p );			if ( prop[p].constructor == Number )				e.custom( e.cur(), prop[p] );			else				e[ prop[p] ]();		}	});};jQuery.speed = function(s,o,i) {	o = o || {};		if ( o.constructor == Function )		o = { complete: o };		var ss = {"slow":600,"fast":200};	o.duration = (s && s.constructor == Number ? s : ss[s]) || 400;	// Queueing	o.oldComplete = o.complete;	o.complete = function(){		jQuery.dequeue(this, "fx");		if ( o.oldComplete && o.oldComplete.constructor == Function )			o.oldComplete.apply( this );	};		if ( i > 0 )		o.complete = null;	return o;};jQuery.queue = {};jQuery.dequeue = function(elem,type){	type = type || "fx";	if ( elem.queue && elem.queue[type] ) {		// Remove self		elem.queue[type].shift();		// Get next function		var f = elem.queue[type][0];			if ( f )			f.apply( elem );	}};jQuery.prototype.queue = function(type,fn){	if ( !fn ) {		fn = type;		type = "fx";	}	return this.each(function(){		if ( !this.queue )			this.queue = {};		if ( !this.queue[type] )			this.queue[type] = [];		this.queue[type].push( fn );			if ( this.queue[type].length == 1 )			fn.apply(this);	});};jQuery.setAuto = function(e,p) {	var a = e.style[p];	var o = jQuery.css(e,p);	e.style[p] = "auto";	var n = jQuery.css(e,p);	if ( o != n )		e.style[p] = a;};/* * I originally wrote fx() as a clone of moo.fx and in the process * of making it small in size the code became illegible to sane * people. You've been warned. */jQuery.fx = function( elem, options, prop ){	var z = this;	// The users options	z.o = {		duration: options.duration || 400,		complete: options.complete	};	// The element	z.el = elem;	// The styles	var y = z.el.style;	// Simple function for setting a style value	z.a = function(){		if ( prop == "opacity" ) {			if (z.now == 1) z.now = 0.9999;			if (window.ActiveXObject)				y.filter = "alpha(opacity=" + z.now*100 + ")";			y.opacity = z.now;		} else			y[prop] = z.now+"px";	};	// Figure out the maximum number to run to	z.max = function(){		return z.el["orig"+prop] || z.cur();	};	// Get the current size	z.cur = function(){		return parseFloat( jQuery.css(z.el,prop) );	};	// Start an animation from one number to another	z.custom = function(from,to){		z.startTime = (new Date()).getTime();		z.now = from;		z.a();		z.timer = setInterval(function(){			z.step(from, to);		}, 13);	};	// Simple 'show' function	z.show = function(){		y.display = "block";		z.o.auto = true;		z.custom(0,z.max());	};	// Simple 'hide' function	z.hide = function(){		// Remember where we started, so that we can go back to it later		z.el["orig"+prop] = this.cur();		// Begin the animation		z.custom(z.cur(),0);	};	// IE has trouble with opacity if it doesn't have layout	if ( jQuery.browser == "msie" && !z.el.currentStyle.hasLayout )		y.zoom = 1;	// Remember  the overflow of the element	z.oldOverflow = y.overflow;	// Make sure that nothing sneaks out	y.overflow = "hidden";	// Each step of an animation	z.step = function(firstNum, lastNum){		var t = (new Date()).getTime();		if (t > z.o.duration + z.startTime) {			// Stop the timer			clearInterval(z.timer);			z.timer = null;			z.now = lastNum;			z.a();			// Reset the overflow			y.overflow = z.oldOverflow;			// If the element was shown, and not using a custom number,			// set its height and/or width to auto			if ( (prop == "height" || prop == "width") && z.o.auto )				jQuery.setAuto( z.el, prop );			// If a callback was provided, execute it			if( z.o.complete.constructor == Function ) {				// Yes, this is a weird place for this, but it needs to be executed				// only once per cluster of effects.				// If the element is, effectively, hidden - hide it				if ( y.height == "0px" || y.width == "0px" )					y.display = "none";				// Execute the complete function				z.o.complete.apply( z.el );			}		} else {			// Figure out where in the animation we are and set the number			var p = (t - this.startTime) / z.o.duration;			z.now = ((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + firstNum;			// Perform the next step of the animation			z.a();		}	};};// AJAX Plugin// Docs Here:// http://jquery.com/docs/ajax//** * Load HTML from a remote file and inject it into the DOM */jQuery.prototype.load = function( url, params, callback ) {	// I overwrote the event plugin's .load	// this won't happen again, I hope -John	if ( url && url.constructor == Function )		return this.bind("load", url);	// Default to a GET request	var type = "GET";	// If the second parameter was provided	if ( params ) {		// If it's a function		if ( params.constructor == Function ) {			// We assume that it's the callback			callback = params;			params = null;					// Otherwise, build a param string		} else {			params = jQuery.param( params );			type = "POST";		}	}		var self = this;		// Request the remote document	jQuery.ajax( type, url, params,function(res){					// Inject the HTML into all the matched elements		self.html(res.responseText).each(function(){			// If a callback function was provided			if ( callback && callback.constructor == Function )				// Execute it within the context of the element				callback.apply( self, [res.responseText] );		});				// Execute all the scripts inside of the newly-injected HTML		$("script", self).each(function(){			eval( this.text || this.textContent || this.innerHTML || "");		});	});		return this;};/** * Load a remote page using a GET request */jQuery.get = function( url, callback, type ) {	// Build and start the HTTP Request	jQuery.ajax( "GET", url, null, function(r) {		if ( callback ) callback( jQuery.httpData(r,type) );	});};/** * Load a remote page using a POST request. */jQuery.post = function( url, data, callback, type ) {	// Build and start the HTTP Request	jQuery.ajax( "POST", url, jQuery.param(data), function(r) {		if ( callback ) callback( jQuery.httpData(r,type) );	});};// If IE is used, create a wrapper for the XMLHttpRequest objectif ( jQuery.browser == "msie" )	XMLHttpRequest = function(){		return new ActiveXObject(			(navigator.userAgent.toLowerCase().indexOf("msie 5") >= 0) ?			"Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"		);	};// Attach a bunch of functions for handling common AJAX events(function(){	var e = "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess".split(',');		for ( var i = 0; i < e.length; i++ ){ (function(){		var o = e[i];		jQuery.fn[o] = function(f){return this.bind(o, f);};	})();}})();/** * A common wrapper for making XMLHttpRequests */jQuery.ajax = function( type, url, data, ret ) {	// If only a single argument was passed in,	// assume that it is a object of key/value pairs	if ( !url ) {		ret = type.complete;		var success = type.success;		var error = type.error;		data = type.data;		url = type.url;		type = type.type;	}		// Watch for a new set of requests	if ( ! jQuery.ajax.active++ )		jQuery.event.trigger( "ajaxStart" );	// Create the request object	var xml = new XMLHttpRequest();	// Open the socket	xml.open(type || "GET", url, true);		// Set the correct header, if data is being sent	if ( data )		xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");	// Set header so calling script knows that it's an XMLHttpRequest	xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");	// Make sure the browser sends the right content length	if ( xml.overrideMimeType )		xml.setRequestHeader("Connection", "close");	// Wait for a response to come back	xml.onreadystatechange = function(){		// The transfer is complete and the data is available		if ( xml.readyState == 4 ) {			// Make sure that the request was successful			if ( jQuery.httpSuccess( xml ) ) {							// If a local callback was specified, fire it				if ( success ) success( xml );								// Fire the global callback				jQuery.event.trigger( "ajaxSuccess" );						// Otherwise, the request was not successful			} else {				// If a local callback was specified, fire it				if ( error ) error( xml );								// Fire the global callback				jQuery.event.trigger( "ajaxError" );			}						// The request was completed			jQuery.event.trigger( "ajaxComplete" );						// Handle the global AJAX counter			if ( ! --jQuery.ajax.active )				jQuery.event.trigger( "ajaxStop" );			// Process result			if ( ret ) ret(xml);		}	};	// Send the data	xml.send(data);};// Counter for holding the number of active queriesjQuery.ajax.active = 0;// Determines if an XMLHttpRequest was successful or notjQuery.httpSuccess = function(r) {	return ( r.status && ( r.status >= 200 && r.status < 300 ) || 		r.status == 304 ) || !r.status && location.protocol == "file:";};// Get the data out of an XMLHttpRequestjQuery.httpData = function(r,type) {	// Check the headers, or watch for a force override	return r.getResponseHeader("content-type").indexOf("xml") > 0 || 		type == "xml" ? r.responseXML : r.responseText;};// Serialize an array of form elements or a set of// key/values into a query stringjQuery.param = function(a) {	var s = [];		// If an array was passed in, assume that it is an array	// of form elements	if ( a.constructor == Array )		// Serialize the form elements		for ( var i = 0; i < a.length; i++ )			s.push( a[i].name + "=" + encodeURIComponent( a[i].value ) );			// Otherwise, assume that it's an object of key/value pairs	else		// Serialize the key/values		for ( var j in a )			s.push( j + "=" + encodeURIComponent( a[j] ) );		// Return the resulting serialization	return s.join("&");};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?