jquery.js

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

JS
1,518
字号
		"": "m[3]=='*'?a.attributes.length>0:jQuery.attr(a,m[3])"	},	"[": "jQuery.Select(m[2],a).length"};jQuery.token = [	"\\.\\.|/\\.\\.", "a.parentNode",	">|/", "jQuery.sibling(a.firstChild)",	"\\+", "jQuery.sibling(a).next",	"~", function(a){		var r = [];		var s = jQuery.sibling(a);		if ( s.n > 0 )			for ( var i = s.n; i < s.length; i++ )				r[r.length] = s[i];		return r;	}];jQuery.Select = function( t, context ) {	context = context || jQuery.context || document;	if ( t.constructor != String )		return t.constructor == Array ? t : [t];	if ( !t.indexOf("//") ) {		context = context.documentElement;		t = t.substr(2,t.length);	} else if ( !t.indexOf("/") ) {		context = context.documentElement;		t = t.substr(1,t.length);		// FIX Assume the root element is right :(		if ( t.indexOf("/") >= 1 )			t = t.substr(t.indexOf("/"),t.length);	}	var ret = [context];	var done = [];	var last = null;	while ( t.length > 0 && last != t ) {    var r = [];		last = t;    t = jQuery.cleanSpaces(t).replace( /^\/\//i, "" );				var foundToken = false;				for ( var i = 0; i < jQuery.token.length; i += 2 ) {			var re = new RegExp("^(" + jQuery.token[i] + ")");			var m = re.exec(t);						if ( m ) {				r = ret = jQuery.map( ret, jQuery.token[i+1] );				t = jQuery.cleanSpaces( t.replace( re, "" ) );				foundToken = true;			}		}				if ( !foundToken ) {			if ( !t.indexOf(",") || !t.indexOf("|") ) {				if ( ret[0] == context ) ret.shift();				done = jQuery.merge( done, ret );				r = ret = [context];				t = " " + t.substr(1,t.length);			} else {				var re2 = /^([#.]?)([a-z0-9\\*_-]*)/i;				var m = re2.exec(t);					if ( m[1] == "#" ) {					// Ummm, should make this work in all XML docs					var oid = document.getElementById(m[2]);					r = ret = oid ? [oid] : [];					t = t.replace( re2, "" );				} else {					if ( !m[2] || m[1] == "." ) m[2] = "*";						for ( var i = 0; i < ret.length; i++ )						r = jQuery.merge( r,							m[2] == "*" ?								jQuery.getAll(ret[i]) :								ret[i].getElementsByTagName(m[2])						);				}			}					}		if ( t ) {			var val = jQuery.filter(t,r);			ret = r = val.r;			t = jQuery.cleanSpaces(val.t);		}	}	if ( ret && ret[0] == context ) ret.shift();	done = jQuery.merge( done, ret );	return done;};jQuery.getAll = function(o,r) {	r = r || [];	var s = o.childNodes;	for ( var i = 0; i < s.length; i++ )		if ( s[i].nodeType == 1 ) {			r[r.length] = s[i];			jQuery.getAll( s[i], r );		}	return r;};jQuery.attr = function(o,a,v){	if ( a && a.constructor == String ) {		var fix = {			"for": "htmlFor",			"class": "className",			"float": "cssFloat"		};		a = (fix[a] && fix[a].replace && fix[a]) || a;		var r = /-([a-z])/ig;		a = a.replace(r,function(z,b){return b.toUpperCase();});		if ( v != undefined ) {			o[a] = v;			if ( o.setAttribute && a != "disabled" )				o.setAttribute(a,v);		}		return o[a] || o.getAttribute(a) || "";	} else		return "";};jQuery.filter = function(t,r,not) {	var g = jQuery.grep;	if ( not === false )		g = function(a,f) {return jQuery.grep(a,f,true);};	while ( t && t.match(/^[:\\.#\\[a-zA-Z\\*]/) ) {		var re = /^\[ *@([a-z0-9*()_-]+) *([~!|*$^=]*) *'?"?([^'"]*)'?"? *\]/i;		var m = re.exec(t);		if ( m )			m = ["", "@", m[2], m[1], m[3]];		else {			re = /^(\[) *([^\]]*) *\]/i;			m = re.exec(t);			if ( !m ) {				re = /^(:)([a-z0-9*_-]*)\( *["']?([^ \)'"]*)['"]? *\)/i;				m = re.exec(t);				if ( !m ) {					re = /^([:\.#]*)([a-z0-9*_-]*)/i;					m = re.exec(t);				}			}		}		t = t.replace( re, "" );		if ( m[1] == ":" && m[2] == "not" )			r = jQuery.filter(m[3],r,false).r;		else {			var f = null;			if ( jQuery.g[m[1]].constructor == String )				f = jQuery.g[m[1]];			else if ( jQuery.g[m[1]][m[2]] )				f = jQuery.g[m[1]][m[2]];			if ( f ) {				eval("f = function(a,i){return " + f + "}");				r = g( r, f );			}		}	}	return { r: r, t: t };};jQuery.parents = function(a){	var b = [];	var c = a.parentNode;	while ( c && c != document ) {		b[b.length] = c;		c = c.parentNode;	}	return b;};jQuery.cleanSpaces = function(t){	return t.replace(/^\s+|\s+$/g, "");};jQuery.ofType = function(a,n,e) {	var t = jQuery.grep(jQuery.sibling(a),function(b){ return b.nodeName == a.nodeName; });	if ( e ) n = t.length - n - 1;	return n != undefined ? t[n] == a : t.length;};jQuery.sibling = function(a,n,e) {	var type = [];	var tmp = a.parentNode.childNodes;	for ( var i = 0; i < tmp.length; i++ ) {		if ( tmp[i].nodeType == 1 )			type[type.length] = tmp[i];		if ( tmp[i] == a )			type.n = type.length - 1;	}	if ( e ) n = type.length - n - 1;	type.cur = ( type[n] == a );	type.prev = ( type.n > 0 ? type[type.n - 1] : null );	type.next = ( type.n < type.length - 1 ? type[type.n + 1] : null );	return type;};jQuery.hasWord = function(e,a) {	if ( e == undefined ) return;	if ( e.className ) e = e.className;	return new RegExp("(^|\\s)" + a + "(\\s|$)").test(e);};jQuery.merge = function(a,b) {	var d = [];	for ( var k = 0; k < b.length; k++ ) d[k] = b[k];	for ( var i = 0; i < a.length; i++ ) {		var c = true;		for ( var j = 0; j < b.length; j++ )			if ( a[i] == b[j] )				c = false;		if ( c ) d[d.length] = a[i];	}	return d;};jQuery.grep = function(a,f,s) {	if ( f.constructor == String )		f = new Function("a","i","return " + f);	var r = [];	if ( a )		for ( var i = 0; i < a.length; i++ )			if ( (!s && f(a[i],i)) || (s && !f(a[i],i)) )				r[r.length] = a[i];	return r;};jQuery.map = function(a,f) {	if ( f.constructor == String )		f = new Function("a","return " + f);		var r = [];	for ( var i = 0; i < a.length; i++ ) {		var t = f(a[i],i);		if ( t !== null ) {			if ( t.constructor != Array ) t = [t];			r = jQuery.merge( t, r );		}	}	return r;};jQuery.event = {	// Bind an event to an element	// Original by Dean Edwards	add: function(element, type, handler) {		// 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 (!handler.guid) handler.guid = jQuery.event.guid++;		if (!element.events) element.events = {};		var handlers = element.events[type];		if (!handlers) {			handlers = element.events[type] = {};			if (element["on" + type])				handlers[0] = element["on" + type];		}		handlers[handler.guid] = handler;		element["on" + type] = jQuery.event.handle;	},		guid: 1,		// Detach an event or set of events from an element	remove: function(element, type, handler) {		if (element.events)			if (type && element.events[type])				if ( handler )					delete element.events[type][handler.guid];				else					for ( var i in element.events[type] )						delete element.events[type][i];			else				for ( var j in element.events )					jQuery.event.remove( element, j );	},		trigger: function(element,type,data) {		data = data || [ jQuery.event.fix({ type: type }) ];		if ( element && element["on" + type] )			element["on" + type].apply( element, data );	},		handle: function(event) {		if ( !event && !window.event ) return;			var returnValue = true, handlers = [];		event = event || jQuery.event.fix(window.event);			for ( var j in this.events[event.type] )			handlers[handlers.length] = this.events[event.type][j];			for ( var i = 0; i < handlers.length; i++ ) {			if ( handlers[i].constructor == Function ) {				this.handleEvent = handlers[i];				if (this.handleEvent(event) === false) {					event.preventDefault();					event.stopPropagation();					returnValue = false;				}			}		}		return returnValue;	},		fix: function(event) {		event.preventDefault = function() {			this.returnValue = false;		};				event.stopPropagation = function() {			this.cancelBubble = true;		};				return event;	}};// We're overriding the old toggle function, so// remember it for laterjQuery.prototype._toggle = jQuery.prototype.toggle;/** * Toggle between two function calls every other click. */jQuery.prototype.toggle = function(a,b) {	// If two functions are passed in, we're	// toggling on a click	return a && b ? this.click(function(e){		// Figure out which function to execute		this.last = this.last == a ? b : a;				// Make sure that clicks don't pass through		e.preventDefault();				// and execute the function		return this.last.apply( this, [e] ) || false;	}) :		// Otherwise, execute the old toggle function	this._toggle();};/** * Toggle between two function calls on mouse over/out. */jQuery.prototype.hover = function(f,g) {		// A private function for haandling mouse 'hovering'	function handleHover(e) {		// Check if mouse(over|out) are still within the same parent element		var p = e.fromElement || e.toElement || e.relatedTarget;		while ( p && p != this ) p = p.parentNode;				// 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);};/** * Bind a function to fire when the DOM is ready. */jQuery.prototype.ready = function(f) {	// If the DOM is already ready	if ( jQuery.isReady )		// Execute the function immediately		f.apply( document );			// Otherwise, remember the function for later	else {		// Add the function to the wait list		jQuery.readyList.push( f );	}	return this;};(function(){	/*	 * Bind a number of event-handling functions, dynamically	 */	var e = ("blur,focus,contextmenu,load,resize,scroll,unload,click,dblclick," +		"mousedown,mouseup,mouseenter,mouseleave,mousemove,mouseover,mouseout," +		"change,reset,select,submit,keydown,keypress,keyup").split(",");	// Go through all the event names, but make sure that	// it is enclosed properly	for ( var i = 0; i < e.length; i++ ) {(function(){					var o = e[i];				// Handle event binding		jQuery.prototype[o] = function(f){ return this.bind(o, f); };				// Handle event unbinding		jQuery.prototype["un"+o] = function(f){ return this.unbind(o, f); };				// Handle event triggering		jQuery.prototype["do"+o] = function(){ return this.trigger(o); };				// Finally, handle events that only fire once		jQuery.prototype["one"+o] = function(f){			// Attach the event listener			return this.bind(o, function(e){				// TODO: Remove the event listener, instead of this hack								// If this function has already been executed, stop				if ( this[o+f] !== null )					return true;								// Otherwise, mark as having been executed				this[o+f]++;								// And execute the bound function				return f.apply(this, [e]);			});		};				})();}			/*	 * All the code that makes DOM Ready work nicely.	 */	 	jQuery.isReady = false;	jQuery.readyList = [];		// Handle when the DOM is ready	jQuery.ready = function() {		// Make sure that the DOM hasn't 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				for ( var i = 0; i < jQuery.readyList.length; i++ )					jQuery.readyList[i].apply( document );								// Reset the list of functions				jQuery.readyList = null;			}		}	};		// If Mozilla is used	if ( jQuery.browser == "mozilla" || jQuery.browser == "opera" ) {		// Use the handy event callback		jQuery.event.add( document, "DOMContentLoaded", jQuery.ready );		// 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=javascript:void(0)><\/script>");			// Use the defer script hack		var script = document.getElementById("__ie_init");		script.onreadystatechange = function() {			if ( this.readyState == "complete" )				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" ) {	

⌨️ 快捷键说明

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