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

📄 jquery-latest.js

📁 使用 jQuery 简化 Ajax 开发
💻 JS
📖 第 1 页 / 共 4 页
字号:
				if ( s.firstChild )					jQuery.getAll( s, r, token, name, re );			}		return r;	},	parents: function( elem ){		var matched = [];		var cur = elem.parentNode;		while ( cur && cur != document ) {			matched.push( cur );			cur = cur.parentNode;		}		return matched;	},	nth: function(cur,result,dir,elem){		result = result || 1;		var num = 0;		for ( ; cur; cur = cur[dir] ) {			if ( cur.nodeType == 1 ) num++;			if ( num == result || result == "even" && num % 2 == 0 && num > 1 && cur == elem ||				result == "odd" && num % 2 == 1 && cur == elem ) return cur;		}	},	sibling: function( n, elem ) {		var r = [];		for ( ; n; n = n.nextSibling ) {			if ( n.nodeType == 1 && (!elem || n != elem) )				r.push( n );		}		return r;	}});/* * A number of helper functions used for managing events. * Many of the ideas behind this code orignated from  * Dean Edwards' addEvent library. */jQuery.event = {	// Bind an event to an element	// Original by Dean Edwards	add: function(element, type, handler, data) {		// For whatever reason, IE has trouble passing the window object		// around, causing it to be cloned in the process		if ( jQuery.browser.msie && element.setInterval != undefined )			element = window;		// if data is passed, bind to handler		if( data ) 			handler.data = data;		// Make sure that the function being executed has a unique ID		if ( !handler.guid )			handler.guid = this.guid++;		// Init the element's event structure		if (!element.$events)			element.$events = {};		// Get the current list of functions bound to this event		var handlers = element.$events[type];		// If it hasn't been initialized yet		if (!handlers) {			// Init the event handler queue			handlers = element.$events[type] = {};			// Remember an existing handler, if it's already there			if (element["on" + type])				handlers[0] = element["on" + type];		}		// Add the function to the element's handler list		handlers[handler.guid] = handler;		// And bind the global event handler to the element		element["on" + type] = this.handle;		// Remember the function in a global list (for triggering)		if (!this.global[type])			this.global[type] = [];		this.global[type].push( element );	},	guid: 1,	global: {},	// Detach an event or set of events from an element	remove: function(element, type, handler) {		if (element.$events) {			var i,j,k;			if ( type && type.type ) { // type is actually an event object here				handler = type.handler;				type    = type.type;			}						if (type && element.$events[type])				// remove the given handler for the given type				if ( handler )					delete element.$events[type][handler.guid];									// remove all handlers for the given type				else					for ( i in element.$events[type] )						delete element.$events[type][i];									// remove all handlers					else				for ( j in element.$events )					this.remove( element, j );						// remove event handler if no more handlers exist			for ( k in element.$events[type] )				if (k) {					k = true;					break;				}			if (!k) element["on" + type] = null;		}	},	trigger: function(type, data, element) {		// Clone the incoming data, if any		data = jQuery.makeArray(data || []);		// Handle a global trigger		if ( !element )			jQuery.each( this.global[type] || [], function(){				jQuery.event.trigger( type, data, this );			});		// Handle triggering a single element		else {			var handler = element["on" + type ], val,				fn = jQuery.isFunction( element[ type ] );			if ( handler ) {				// Pass along a fake event				data.unshift( this.fix({ type: type, target: element }) );					// Trigger the event				if ( (val = handler.apply( element, data )) !== false )					this.triggered = true;			}			if ( fn && val !== false )				element[ type ]();			this.triggered = false;		}	},	handle: function(event) {		// Handle the second event of a trigger and when		// an event is called after a page has unloaded		if ( typeof jQuery == "undefined" || jQuery.event.triggered ) return;		// Empty object is for triggered events with no data		event = jQuery.event.fix( event || window.event || {} ); 		// returned undefined or false		var returnValue;		var c = this.$events[event.type];		var args = [].slice.call( arguments, 1 );		args.unshift( event );		for ( var j in c ) {			// Pass in a reference to the handler function itself			// So that we can later remove it			args[0].handler = c[j];			args[0].data = c[j].data;			if ( c[j].apply( this, args ) === false ) {				event.preventDefault();				event.stopPropagation();				returnValue = false;			}		}		// Clean up added properties in IE to prevent memory leak		if (jQuery.browser.msie) event.target = event.preventDefault = event.stopPropagation = event.handler = event.data = null;		return returnValue;	},	fix: function(event) {		// Fix target property, if necessary		if ( !event.target && event.srcElement )			event.target = event.srcElement;		// Calculate pageX/Y if missing and clientX/Y available		if ( event.pageX == undefined && event.clientX != undefined ) {			var e = document.documentElement, b = document.body;			event.pageX = event.clientX + (e.scrollLeft || b.scrollLeft);			event.pageY = event.clientY + (e.scrollTop || b.scrollTop);		}						// check if target is a textnode (safari)		if (jQuery.browser.safari && event.target.nodeType == 3) {			// store a copy of the original event object 			// and clone because target is read only			var originalEvent = event;			event = jQuery.extend({}, originalEvent);						// get parentnode from textnode			event.target = originalEvent.target.parentNode;						// add preventDefault and stopPropagation since 			// they will not work on the clone			event.preventDefault = function() {				return originalEvent.preventDefault();			};			event.stopPropagation = function() {				return originalEvent.stopPropagation();			};		}				// fix preventDefault and stopPropagation		if (!event.preventDefault)			event.preventDefault = function() {				this.returnValue = false;			};					if (!event.stopPropagation)			event.stopPropagation = function() {				this.cancelBubble = true;			};					return event;	}};jQuery.fn.extend({	bind: function( type, data, fn ) {		return this.each(function(){			jQuery.event.add( this, type, fn || data, data );		});	},	one: function( type, data, fn ) {		return this.each(function(){			jQuery.event.add( this, type, function(event) {				jQuery(this).unbind(event);				return (fn || data).apply( this, arguments);			}, data);		});	},	unbind: function( type, fn ) {		return this.each(function(){			jQuery.event.remove( this, type, fn );		});	},	trigger: function( type, data ) {		return this.each(function(){			jQuery.event.trigger( type, data, this );		});	},	toggle: function() {		// Save reference to arguments for access in closure		var a = arguments;		return this.click(function(e) {			// Figure out which function to execute			this.lastToggle = this.lastToggle == 0 ? 1 : 0;						// Make sure that clicks stop			e.preventDefault();						// and execute the function			return a[this.lastToggle].apply( this, [e] ) || false;		});	},	hover: function(f,g) {				// A private function for handling mouse 'hovering'		function handleHover(e) {			// Check if mouse(over|out) are still within the same parent element			var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;				// Traverse up the tree			while ( p && p != this ) try { p = p.parentNode } catch(e) { p = this; };						// If we actually just moused on to a sub-element, ignore it			if ( p == this ) return false;						// Execute the right function			return (e.type == "mouseover" ? f : g).apply(this, [e]);		}				// Bind the function to the two event listeners		return this.mouseover(handleHover).mouseout(handleHover);	},	ready: function(f) {		// If the DOM is already ready		if ( jQuery.isReady )			// Execute the function immediately			f.apply( document, [jQuery] );					// Otherwise, remember the function for later		else {			// Add the function to the wait list			jQuery.readyList.push( function() { return f.apply(this, [jQuery]) } );		}			return this;	}});jQuery.extend({	/*	 * All the code that makes DOM Ready work nicely.	 */	isReady: false,	readyList: [],		// Handle when the DOM is ready	ready: function() {		// Make sure that the DOM is not already loaded		if ( !jQuery.isReady ) {			// Remember that the DOM is ready			jQuery.isReady = true;						// If there are functions bound, to execute			if ( jQuery.readyList ) {				// Execute all of them				jQuery.each( jQuery.readyList, function(){					this.apply( document );				});								// Reset the list of functions				jQuery.readyList = null;			}			// Remove event lisenter to avoid memory leak			if ( jQuery.browser.mozilla || jQuery.browser.opera )				document.removeEventListener( "DOMContentLoaded", jQuery.ready, false );		}	}});new function(){	jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +		"mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + 		"submit,keydown,keypress,keyup,error").split(","), function(i,o){				// Handle event binding		jQuery.fn[o] = function(f){			return f ? this.bind(o, f) : this.trigger(o);		};				});		// If Mozilla is used	if ( jQuery.browser.mozilla || jQuery.browser.opera )		// Use the handy event callback		document.addEventListener( "DOMContentLoaded", jQuery.ready, false );		// If IE is used, use the excellent hack by Matthias Miller	// http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited	else if ( jQuery.browser.msie ) {			// Only works if you document.write() it		document.write("<scr" + "ipt id=__ie_init defer=true " + 			"src=//:><\/script>");			// Use the defer script hack		var script = document.getElementById("__ie_init");				// script does not exist if jQuery is loaded dynamically		if ( script ) 			script.onreadystatechange = function() {				if ( this.readyState != "complete" ) return;				this.parentNode.removeChild( this );				jQuery.ready();			};			// Clear from memory		script = null;		// If Safari  is used	} else if ( jQuery.browser.safari )		// Continually check to see if the document.readyState is valid		jQuery.safariTimer = setInterval(function(){			// loaded and complete are both valid states			if ( document.readyState == "loaded" || 				document.readyState == "complete" ) {					// 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 );	};// Clean up after IE to avoid memory leaksif (jQuery.browser.msie)	jQuery(window).one("unload", function() {		var global = jQuery.event.global;		for ( var type in global ) {			var els = global[type], i = els.length;			if ( i && type != 'unload' )				do					jQuery.event.remove(els[i-1], type);				while (--i);		}	});jQuery.fn.extend({	loadIfModified: function( url, params, callback ) {		this.load( url, params, callback, 1 );	},	load: function( url, params, callback, ifModified ) {		if ( jQuery.isFunction( url ) )			return this.bind("load", url);		callback = callback || function(){};		// Default to a GET request		var type = "GET";		// If the second parameter was provided		if ( params )			// If it's a function			if ( jQuery.isFunction( params ) ) {				// 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({			url: url,			type: type,			data: params,			ifModified: ifModified,			complete: function(res, status){				if ( status == "success" || !ifModified && status == "notmodified" )					// Inject the HTML into all the matched elements					self.attr("innerHTML", res.responseText)					  // Execute all the scripts inside of the newly-injected HTML					  .evalScripts()					  // Execute callback					  .each( callback, [res.responseText, status, res] );				else					callback.apply( self, [res.responseText, status, res] );			}		});		return this;	},	serialize: function() {		return jQuery.param( this );	},	evalScripts: function() {		return this.find("script").each(function(){			if ( this.src )				jQuery.getScript( this.src );			else				jQuery.globalEval( this.text || this.textContent || this.innerHTML || "" );		}).end();	}});// If IE is used, create a wrapper for the XMLHttpRequest objectif ( !window.XMLHttpRequest )	XMLHttpRequest = function(){		return new ActiveXObject("Microsoft.XMLHTTP");	};// Attach a bunch of functions for handling common AJAX eventsjQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){	jQuery.fn[o] = function(f){		return this.bind(o, f);	};});jQuery.extend({	get: function( url, data, callback, type, ifModified ) {		// shift arguments if data argument was ommited		if ( jQuery.isFunction( data ) ) {			callback = data;			data = null;		}				return jQuery.ajax({			url: url,			data: data,			success: callback,			dataType: type,			ifModified: ifModified		});	},	getIfModified: function( url, data, callback, type ) {		return jQuery.get(url, data, callback, type, 1);	},	getScript: function( url, callback ) {		return jQuery.get(url, null, callback, "script");	},	getJSON: function( url, data, callback ) {		return jQuery.get(url, data, callback, "json");	},	post: function( url, data, callback, type ) {		if ( jQuery.isFunction( data ) ) {			callback = data;			data = {};		}		return jQuery.ajax({			type: "POST",			url: url,			data: data,			success: callback,			dataType: type		});	},	// timeout (ms)	//timeout: 0,	ajaxTimeout: function( timeout ) {		jQuery.ajaxSettings.timeout = timeout;	},	ajaxSetup: function( settings ) {		jQuery.extend( jQuery.ajaxSettings, settings );	},	ajaxSettings: {		global: true,		type: "GET",		timeout: 0,		contentType: "application/x-www-form-urlencoded",		processData: true,		async: true,		data: null	},		// Last-Modified header cache for next request	lastModified: {},	ajax: function( s ) {		// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout		s = jQuery.extend({}, jQuery.ajaxSettings, s);		// if data available		if ( s.data ) {			// convert data if not already a string

⌨️ 快捷键说明

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