⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jquery-latest.js

📁 使用 jQuery 简化 Ajax 开发
💻 JS
📖 第 1 页 / 共 4 页
字号:
			if (s.processData && typeof s.data != "string")    			s.data = jQuery.param(s.data);			// append data to url for get requests			if( s.type.toLowerCase() == "get" ) {				// "?" + data or "&" + data (in case there are already params)				s.url += ((s.url.indexOf("?") > -1) ? "&" : "?") + s.data;				// IE likes to send both get and post data, prevent this				s.data = null;			}		}		// Watch for a new set of requests		if ( s.global && ! jQuery.active++ )			jQuery.event.trigger( "ajaxStart" );		var requestDone = false;		// Create the request object		var xml = new XMLHttpRequest();		// Open the socket		xml.open(s.type, s.url, s.async);		// Set the correct header, if data is being sent		if ( s.data )			xml.setRequestHeader("Content-Type", s.contentType);		// Set the If-Modified-Since header, if ifModified mode.		if ( s.ifModified )			xml.setRequestHeader("If-Modified-Since",				jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );		// Set header so the called 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");					// Allow custom headers/mimetypes		if( s.beforeSend )			s.beforeSend(xml);					if ( s.global )		    jQuery.event.trigger("ajaxSend", [xml, s]);		// Wait for a response to come back		var onreadystatechange = function(isTimeout){			// The transfer is complete and the data is available, or the request timed out			if ( xml && (xml.readyState == 4 || isTimeout == "timeout") ) {				requestDone = true;								// clear poll interval				if (ival) {					clearInterval(ival);					ival = null;				}								var status;				try {					status = jQuery.httpSuccess( xml ) && isTimeout != "timeout" ?						s.ifModified && jQuery.httpNotModified( xml, s.url ) ? "notmodified" : "success" : "error";					// Make sure that the request was successful or notmodified					if ( status != "error" ) {						// Cache Last-Modified header, if ifModified mode.						var modRes;						try {							modRes = xml.getResponseHeader("Last-Modified");						} catch(e) {} // swallow exception thrown by FF if header is not available							if ( s.ifModified && modRes )							jQuery.lastModified[s.url] = modRes;							// process the data (runs the xml through httpData regardless of callback)						var data = jQuery.httpData( xml, s.dataType );							// If a local callback was specified, fire it and pass it the data						if ( s.success )							s.success( data, status );							// Fire the global callback						if( s.global )							jQuery.event.trigger( "ajaxSuccess", [xml, s] );					} else						jQuery.handleError(s, xml, status);				} catch(e) {					status = "error";					jQuery.handleError(s, xml, status, e);				}				// The request was completed				if( s.global )					jQuery.event.trigger( "ajaxComplete", [xml, s] );				// Handle the global AJAX counter				if ( s.global && ! --jQuery.active )					jQuery.event.trigger( "ajaxStop" );				// Process result				if ( s.complete )					s.complete(xml, status);				// Stop memory leaks				if(s.async)					xml = null;			}		};				// don't attach the handler to the request, just poll it instead		var ival = setInterval(onreadystatechange, 13); 		// Timeout checker		if ( s.timeout > 0 )			setTimeout(function(){				// Check to see if the request is still happening				if ( xml ) {					// Cancel the request					xml.abort();					if( !requestDone )						onreadystatechange( "timeout" );				}			}, s.timeout);					// Send the data		try {			xml.send(s.data);		} catch(e) {			jQuery.handleError(s, xml, null, e);		}				// firefox 1.5 doesn't fire statechange for sync requests		if ( !s.async )			onreadystatechange();				// return XMLHttpRequest to allow aborting the request etc.		return xml;	},	handleError: function( s, xml, status, e ) {		// If a local callback was specified, fire it		if ( s.error ) s.error( xml, status, e );		// Fire the global callback		if ( s.global )			jQuery.event.trigger( "ajaxError", [xml, s, e] );	},	// Counter for holding the number of active queries	active: 0,	// Determines if an XMLHttpRequest was successful or not	httpSuccess: function( r ) {		try {			return !r.status && location.protocol == "file:" ||				( r.status >= 200 && r.status < 300 ) || r.status == 304 ||				jQuery.browser.safari && r.status == undefined;		} catch(e){}		return false;	},	// Determines if an XMLHttpRequest returns NotModified	httpNotModified: function( xml, url ) {		try {			var xmlRes = xml.getResponseHeader("Last-Modified");			// Firefox always returns 200. check Last-Modified date			return xml.status == 304 || xmlRes == jQuery.lastModified[url] ||				jQuery.browser.safari && xml.status == undefined;		} catch(e){}		return false;	},	/* Get the data out of an XMLHttpRequest.	 * Return parsed XML if content-type header is "xml" and type is "xml" or omitted,	 * otherwise return plain text.	 * (String) data - The type of data that you're expecting back,	 * (e.g. "xml", "html", "script")	 */	httpData: function( r, type ) {		var ct = r.getResponseHeader("content-type");		var data = !type && ct && ct.indexOf("xml") >= 0;		data = type == "xml" || data ? r.responseXML : r.responseText;		// If the type is "script", eval it in global context		if ( type == "script" )			jQuery.globalEval( data );		// Get the JavaScript object, if JSON is used.		if ( type == "json" )			eval( "data = " + data );		// evaluate scripts within html		if ( type == "html" )			jQuery("<div>").html(data).evalScripts();		return data;	},	// Serialize an array of form elements or a set of	// key/values into a query string	param: function( a ) {		var s = [];		// If an array was passed in, assume that it is an array		// of form elements		if ( a.constructor == Array || a.jquery )			// Serialize the form elements			jQuery.each( a, function(){				s.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( this.value ) );			});		// Otherwise, assume that it's an object of key/value pairs		else			// Serialize the key/values			for ( var j in a )				// If the value is an array then the key names need to be repeated				if ( a[j] && a[j].constructor == Array )					jQuery.each( a[j], function(){						s.push( encodeURIComponent(j) + "=" + encodeURIComponent( this ) );					});				else					s.push( encodeURIComponent(j) + "=" + encodeURIComponent( a[j] ) );		// Return the resulting serialization		return s.join("&");	},		// evalulates a script in global context	// not reliable for safari	globalEval: function( data ) {		if ( window.execScript )			window.execScript( data );		else if ( jQuery.browser.safari )			// safari doesn't provide a synchronous global eval			window.setTimeout( data, 0 );		else			eval.call( window, data );	}});jQuery.fn.extend({	show: function(speed,callback){		var hidden = this.filter(":hidden");		speed ?			hidden.animate({				height: "show", width: "show", opacity: "show"			}, speed, callback) :						hidden.each(function(){				this.style.display = this.oldblock ? this.oldblock : "";				if ( jQuery.css(this,"display") == "none" )					this.style.display = "block";			});		return this;	},	hide: function(speed,callback){		var visible = this.filter(":visible");		speed ?			visible.animate({				height: "hide", width: "hide", opacity: "hide"			}, speed, callback) :						visible.each(function(){				this.oldblock = this.oldblock || jQuery.css(this,"display");				if ( this.oldblock == "none" )					this.oldblock = "block";				this.style.display = "none";			});		return this;	},	// Save the old toggle function	_toggle: jQuery.fn.toggle,	toggle: function( fn, fn2 ){		var args = arguments;		return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?			this._toggle( fn, fn2 ) :			this.each(function(){				jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]					.apply( jQuery(this), args );			});	},	slideDown: function(speed,callback){		return this.animate({height: "show"}, speed, callback);	},	slideUp: function(speed,callback){		return this.animate({height: "hide"}, speed, callback);	},	slideToggle: function(speed, callback){		return this.each(function(){			var state = jQuery(this).is(":hidden") ? "show" : "hide";			jQuery(this).animate({height: state}, speed, callback);		});	},	fadeIn: function(speed, callback){		return this.animate({opacity: "show"}, speed, callback);	},	fadeOut: function(speed, callback){		return this.animate({opacity: "hide"}, speed, callback);	},	fadeTo: function(speed,to,callback){		return this.animate({opacity: to}, speed, callback);	},	animate: function( prop, speed, easing, callback ) {		return this.queue(function(){					this.curAnim = jQuery.extend({}, prop);			var opt = jQuery.speed(speed, easing, callback);						for ( var p in prop ) {				var e = new jQuery.fx( this, opt, p );				if ( prop[p].constructor == Number )					e.custom( e.cur(), prop[p] );				else					e[ prop[p] ]( prop );			}					});	},	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.extend({		speed: function(speed, easing, fn) {		var opt = speed && speed.constructor == Object ? speed : {			complete: fn || !fn && easing || 				jQuery.isFunction( speed ) && speed,			duration: speed,			easing: fn && easing || easing && easing.constructor != Function && easing		};		opt.duration = (opt.duration && opt.duration.constructor == Number ? 			opt.duration : 			{ slow: 600, fast: 200 }[opt.duration]) || 400;			// Queueing		opt.old = opt.complete;		opt.complete = function(){			jQuery.dequeue(this, "fx");			if ( jQuery.isFunction( opt.old ) )				opt.old.apply( this );		};			return opt;	},		easing: {},		queue: {},		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 );		}	},	/*	 * 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.	 */		fx: function( elem, options, prop ){		var z = this;		// The styles		var y = elem.style;				// Store display property		var oldDisplay = jQuery.css(elem, "display");		// Make sure that nothing sneaks out		y.overflow = "hidden";		// Simple function for setting a style value		z.a = function(){			if ( options.step )				options.step.apply( elem, [ z.now ] );			if ( prop == "opacity" )				jQuery.attr(y, "opacity", z.now); // Let attr handle opacity			else if ( parseInt(z.now) ) // My hate for IE will never die				y[prop] = parseInt(z.now) + "px";						y.display = "block"; // Set display property to block for animation		};		// Figure out the maximum number to run to		z.max = function(){			return parseFloat( jQuery.css(elem,prop) );		};		// Get the current size		z.cur = function(){			var r = parseFloat( jQuery.curCSS(elem, prop) );			return r && r > -10000 ? r : z.max();		};		// 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(){			if ( !elem.orig ) elem.orig = {};			// Remember where we started, so that we can go back to it later			elem.orig[prop] = this.cur();			options.show = true;			// Begin the animation			z.custom(0, elem.orig[prop]);			// Stupid IE, look what you made me do			if ( prop != "opacity" )				y[prop] = "1px";		};		// Simple 'hide' function		z.hide = function(){			if ( !elem.orig ) elem.orig = {};			// Remember where we started, so that we can go back to it later			elem.orig[prop] = this.cur();			options.hide = true;			// Begin the animation			z.custom(elem.orig[prop], 0);		};				//Simple 'toggle' function		z.toggle = function() {			if ( !elem.orig ) elem.orig = {};			// Remember where we started, so that we can go back to it later			elem.orig[prop] = this.cur();			if(oldDisplay == "none")  {				options.show = true;								// Stupid IE, look what you made me do				if ( prop != "opacity" )					y[prop] = "1px";				// Begin the animation				z.custom(0, elem.orig[prop]);				} else {				options.hide = true;				// Begin the animation				z.custom(elem.orig[prop], 0);			}				};		// Each step of an animation		z.step = function(firstNum, lastNum){			var t = (new Date()).getTime();			if (t > options.duration + z.startTime) {				// Stop the timer				clearInterval(z.timer);				z.timer = null;				z.now = lastNum;				z.a();				if (elem.curAnim) elem.curAnim[ prop ] = true;				var done = true;				for ( var i in elem.curAnim )					if ( elem.curAnim[i] !== true )						done = false;				if ( done ) {					// Reset the overflow					y.overflow = "";										// Reset the display					y.display = oldDisplay;					if (jQuery.css(elem, "display") == "none")						y.display = "block";					// Hide the element if the "hide" operation was done					if ( options.hide ) 						y.display = "none";					// Reset the properties, if the item has been hidden or shown					if ( options.hide || options.show )						for ( var p in elem.curAnim )							if (p == "opacity")								jQuery.attr(y, p, elem.orig[p]);							else								y[p] = "";				}				// If a callback was provided, execute it				if ( done && jQuery.isFunction( options.complete ) )					// Execute the complete function					options.complete.apply( elem );			} else {				var n = t - this.startTime;				// Figure out where in the animation we are and set the number				var p = n / options.duration;								// If the easing function exists, then use it 				z.now = options.easing && jQuery.easing[options.easing] ?					jQuery.easing[options.easing](p, n,  firstNum, (lastNum-firstNum), options.duration) :					// else use default linear easing					((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + firstNum;				// Perform the next step of the animation				z.a();			}		};		}});}

⌨️ 快捷键说明

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