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

📄 jquery.js

📁 经典编程900例(C语言),主要是C基础知识
💻 JS
📖 第 1 页 / 共 4 页
字号:
			return elem.getAttribute( name );		} else {			name = name.replace(/-([a-z])/ig,function(z,b){return b.toUpperCase();});			if ( value != undefined ) elem[name] = value;			return elem[name];		}	},	trim: function(t){		return t.replace(/^\s+|\s+$/g, "");	},	makeArray: function( a ) {		var r = [];		if ( a.constructor != Array )			for ( var i = 0, al = a.length; i < al; i++ )				r.push( a[i] );		else			r = a.slice( 0 );		return r;	},	inArray: function( b, a ) {		for ( var i = 0, al = a.length; i < al; i++ )			if ( a[i] == b )				return i;		return -1;	},	merge: function(first, second) {		var r = [].slice.call( first, 0 );		// Now check for duplicates between the two arrays		// and only add the unique items		for ( var i = 0, sl = second.length; i < sl; i++ )			// Check for duplicates			if ( jQuery.inArray( second[i], r ) == -1 )				// The item is unique, add it				first.push( second[i] );		return first;	},	grep: function(elems, fn, inv) {		// If a string is passed in for the function, make a function		// for it (a handy shortcut)		if ( typeof fn == "string" )			fn = new Function("a","i","return " + fn);		var result = [];		// Go through the array, only saving the items		// that pass the validator function		for ( var i = 0, el = elems.length; i < el; i++ )			if ( !inv && fn(elems[i],i) || inv && !fn(elems[i],i) )				result.push( elems[i] );		return result;	},	map: function(elems, fn) {		// If a string is passed in for the function, make a function		// for it (a handy shortcut)		if ( typeof fn == "string" )			fn = new Function("a","return " + fn);		var result = [], r = [];		// Go through the array, translating each of the items to their		// new value (or values).		for ( var i = 0, el = elems.length; i < el; i++ ) {			var val = fn(elems[i],i);			if ( val !== null && val != undefined ) {				if ( val.constructor != Array ) val = [val];				result = result.concat( val );			}		}		var r = result.length ? [ result[0] ] : [];		check: for ( var i = 1, rl = result.length; i < rl; i++ ) {			for ( var j = 0; j < i; j++ )				if ( result[i] == r[j] )					continue check;			r.push( result[i] );		}		return r;	}}); /* * Whether the W3C compliant box model is being used. * * @property * @name $.boxModel * @type Boolean * @cat JavaScript */new function() {	var b = navigator.userAgent.toLowerCase();	// Figure out what browser is being used	jQuery.browser = {		safari: /webkit/.test(b),		opera: /opera/.test(b),		msie: /msie/.test(b) && !/opera/.test(b),		mozilla: /mozilla/.test(b) && !/(compatible|webkit)/.test(b)	};	// Check to see if the W3C box model is being used	jQuery.boxModel = !jQuery.browser.msie || document.compatMode == "CSS1Compat";};jQuery.each({	parent: "a.parentNode",	parents: "jQuery.parents(a)",	next: "jQuery.nth(a,2,'nextSibling')",	prev: "jQuery.nth(a,2,'previousSibling')",	siblings: "jQuery.sibling(a.parentNode.firstChild,a)",	children: "jQuery.sibling(a.firstChild)"}, function(i,n){	jQuery.fn[ i ] = function(a) {		var ret = jQuery.map(this,n);		if ( a && typeof a == "string" )			ret = jQuery.multiFilter(a,ret);		return this.pushStack( ret );	};});jQuery.each({	appendTo: "append",	prependTo: "prepend",	insertBefore: "before",	insertAfter: "after"}, function(i,n){	jQuery.fn[ i ] = function(){		var a = arguments;		return this.each(function(){			for ( var j = 0, al = a.length; j < al; j++ )				jQuery(a[j])[n]( this );		});	};});jQuery.each( {	removeAttr: function( key ) {		jQuery.attr( this, key, "" );		this.removeAttribute( key );	},	addClass: function(c){		jQuery.className.add(this,c);	},	removeClass: function(c){		jQuery.className.remove(this,c);	},	toggleClass: function( c ){		jQuery.className[ jQuery.className.has(this,c) ? "remove" : "add" ](this, c);	},	remove: function(a){		if ( !a || jQuery.filter( a, [this] ).r.length )			this.parentNode.removeChild( this );	},	empty: function() {		while ( this.firstChild )			this.removeChild( this.firstChild );	}}, function(i,n){	jQuery.fn[ i ] = function() {		return this.each( n, arguments );	};});jQuery.each( [ "eq", "lt", "gt", "contains" ], function(i,n){	jQuery.fn[ n ] = function(num,fn) {		return this.filter( ":" + n + "(" + num + ")", fn );	};});jQuery.each( [ "height", "width" ], function(i,n){	jQuery.fn[ n ] = function(h) {		return h == undefined ?			( this.length ? jQuery.css( this[0], n ) : null ) :			this.css( n, h.constructor == String ? h : h + "px" );	};});jQuery.extend({	expr: {		"": "m[2]=='*'||jQuery.nodeName(a,m[2])",		"#": "a.getAttribute('id')==m[2]",		":": {			// Position Checks			lt: "i<m[3]-0",			gt: "i>m[3]-0",			nth: "m[3]-0==i",			eq: "m[3]-0==i",			first: "i==0",			last: "i==r.length-1",			even: "i%2==0",			odd: "i%2",			// Child Checks			"nth-child": "jQuery.nth(a.parentNode.firstChild,m[3],'nextSibling',a)==a",			"first-child": "jQuery.nth(a.parentNode.firstChild,1,'nextSibling')==a",			"last-child": "jQuery.nth(a.parentNode.lastChild,1,'previousSibling')==a",			"only-child": "jQuery.sibling(a.parentNode.firstChild).length==1",			// Parent Checks			parent: "a.firstChild",			empty: "!a.firstChild",			// Text Check			contains: "jQuery.fn.text.apply([a]).indexOf(m[3])>=0",			// Visibility			visible: 'a.type!="hidden"&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden"',			hidden: 'a.type=="hidden"||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden"',			// Form attributes			enabled: "!a.disabled",			disabled: "a.disabled",			checked: "a.checked",			selected: "a.selected||jQuery.attr(a,'selected')",			// Form elements			text: "a.type=='text'",			radio: "a.type=='radio'",			checkbox: "a.type=='checkbox'",			file: "a.type=='file'",			password: "a.type=='password'",			submit: "a.type=='submit'",			image: "a.type=='image'",			reset: "a.type=='reset'",			button: 'a.type=="button"||jQuery.nodeName(a,"button")',			input: "/input|select|textarea|button/i.test(a.nodeName)"		},		".": "jQuery.className.has(a,m[2])",		"@": {			"=": "z==m[4]",			"!=": "z!=m[4]",			"^=": "z&&!z.indexOf(m[4])",			"$=": "z&&z.substr(z.length - m[4].length,m[4].length)==m[4]",			"*=": "z&&z.indexOf(m[4])>=0",			"": "z",			_resort: function(m){				return ["", m[1], m[3], m[2], m[5]];			},			_prefix: "z=a[m[3]]||jQuery.attr(a,m[3]);"		},		"[": "jQuery.find(m[2],a).length"	},		// The regular expressions that power the parsing engine	parse: [		// Match: [@value='test'], [@foo]		/^\[ *(@)([a-z0-9_-]*) *([!*$^=]*) *('?"?)(.*?)\4 *\]/i,		// Match: [div], [div p]		/^(\[)\s*(.*?(\[.*?\])?[^[]*?)\s*\]/,		// Match: :contains('foo')		/^(:)([a-z0-9_-]*)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/i,		// Match: :even, :last-chlid		/^([:.#]*)([a-z0-9_*-]*)/i	],	token: [		/^(\/?\.\.)/, "a.parentNode",		/^(>|\/)/, "jQuery.sibling(a.firstChild)",		/^(\+)/, "jQuery.nth(a,2,'nextSibling')",		/^(~)/, function(a){			var s = jQuery.sibling(a.parentNode.firstChild);			return s.slice(0, jQuery.inArray(a,s));		}	],	multiFilter: function( expr, elems, not ) {		var old, cur = [];		while ( expr && expr != old ) {			old = expr;			var f = jQuery.filter( expr, elems, not );			expr = f.t.replace(/^\s*,\s*/, "" );			cur = not ? elems = f.r : jQuery.merge( cur, f.r );		}		return cur;	},	find: function( t, context ) {		// Quickly handle non-string expressions		if ( typeof t != "string" )			return [ t ];		// Make sure that the context is a DOM Element		if ( context && !context.nodeType )			context = null;		// Set the correct context (if none is provided)		context = context || document;		// Handle the common XPath // expression		if ( !t.indexOf("//") ) {			context = context.documentElement;			t = t.substr(2,t.length);		// And the / root expression		} else if ( !t.indexOf("/") ) {			context = context.documentElement;			t = t.substr(1,t.length);			if ( t.indexOf("/") >= 1 )				t = t.substr(t.indexOf("/"),t.length);		}		// Initialize the search		var ret = [context], done = [], last = null;		// Continue while a selector expression exists, and while		// we're no longer looping upon ourselves		while ( t && last != t ) {			var r = [];			last = t;			t = jQuery.trim(t).replace( /^\/\//i, "" );			var foundToken = false;			// An attempt at speeding up child selectors that			// point to a specific element tag			var re = /^[\/>]\s*([a-z0-9*-]+)/i;			var m = re.exec(t);			if ( m ) {				// Perform our own iteration and filter				jQuery.each( ret, function(){					for ( var c = this.firstChild; c; c = c.nextSibling )						if ( c.nodeType == 1 && ( jQuery.nodeName(c, m[1]) || m[1] == "*" ) )							r.push( c );				});				ret = r;				t = t.replace( re, "" );				if ( t.indexOf(" ") == 0 ) continue;				foundToken = true;			} else {				// Look for pre-defined expression tokens				for ( var i = 0; i < jQuery.token.length; i += 2 ) {					// Attempt to match each, individual, token in					// the specified order					var re = jQuery.token[i];					var m = re.exec(t);					// If the token match was found					if ( m ) {						// Map it against the token's handler						r = ret = jQuery.map( ret, jQuery.isFunction( jQuery.token[i+1] ) ?							jQuery.token[i+1] :							function(a){ return eval(jQuery.token[i+1]); });						// And remove the token						t = jQuery.trim( t.replace( re, "" ) );						foundToken = true;						break;					}				}			}			// See if there's still an expression, and that we haven't already			// matched a token			if ( t && !foundToken ) {				// Handle multiple expressions				if ( !t.indexOf(",") ) {					// Clean the result set					if ( ret[0] == context ) ret.shift();					// Merge the result sets					jQuery.merge( done, ret );					// Reset the context					r = ret = [context];					// Touch up the selector string					t = " " + t.substr(1,t.length);				} else {					// Optomize for the case nodeName#idName					var re2 = /^([a-z0-9_-]+)(#)([a-z0-9\\*_-]*)/i;					var m = re2.exec(t);										// Re-organize the results, so that they're consistent					if ( m ) {					   m = [ 0, m[2], m[3], m[1] ];					} else {						// Otherwise, do a traditional filter check for						// ID, class, and element selectors						re2 = /^([#.]?)([a-z0-9\\*_-]*)/i;						m = re2.exec(t);					}					// Try to do a global search by ID, where we can					if ( m[1] == "#" && ret[ret.length-1].getElementById ) {						// Optimization for HTML document case						var oid = ret[ret.length-1].getElementById(m[2]);						// Do a quick check for node name (where applicable) so						// that div#foo searches will be really fast						ret = r = oid && 						  (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : [];					} else {						// Pre-compile a regular expression to handle class searches						if ( m[1] == "." )							var rec = new RegExp("(^|\\s)" + m[2] + "(\\s|$)");						// We need to find all descendant elements, it is more						// efficient to use getAll() when we are already further down						// the tree - we try to recognize that here						jQuery.each( ret, function(){							// Grab the tag name being searched for							var tag = m[1] != "" || m[0] == "" ? "*" : m[2];							// Handle IE7 being really dumb about <object>s							if ( jQuery.nodeName(this, "object") && tag == "*" )								tag = "param";							jQuery.merge( r,								m[1] != "" && ret.length != 1 ?									jQuery.getAll( this, [], m[1], m[2], rec ) :									this.getElementsByTagName( tag )							);						});						// It's faster to filter by class and be done with it						if ( m[1] == "." && ret.length == 1 )							r = jQuery.grep( r, function(e) {								return rec.test(e.className);							});						// Same with ID filtering						if ( m[1] == "#" && ret.length == 1 ) {							// Remember, then wipe out, the result set							var tmp = r;							r = [];							// Then try to find the element with the ID							jQuery.each( tmp, function(){								if ( this.getAttribute("id") == m[2] ) {									r = [ this ];									return false;								}							});						}						ret = r;					}					t = t.replace( re2, "" );				}			}			// If a selector string still exists			if ( t ) {				// Attempt to filter it				var val = jQuery.filter(t,r);				ret = r = val.r;				t = jQuery.trim(val.t);			}		}		// Remove the root context		if ( ret && ret[0] == context ) ret.shift();		// And combine the results		jQuery.merge( done, ret );		return done;	},	filter: function(t,r,not) {		// Look for common filter expressions		while ( t && /^[a-z[({<*:.#]/i.test(t) ) {			var p = jQuery.parse, m;			jQuery.each( p, function(i,re){						// Look for, and replace, string-like sequences				// and finally build a regexp out of it				m = re.exec( t );				if ( m ) {					// Remove what we just matched					t = t.substring( m[0].length );					// Re-organize the first match					if ( jQuery.expr[ m[1] ]._resort )						m = jQuery.expr[ m[1] ]._resort( m );					return false;				}			});			// :not() is a special case that can be optimized by			// keeping it out of the expression list			if ( m[1] == ":" && m[2] == "not" )				r = jQuery.filter(m[3], r, true).r;			// Handle classes as a special case (this will help to			// improve the speed, as the regexp will only be compiled once)			else if ( m[1] == "." ) {				var re = new RegExp("(^|\\s)" + m[2] + "(\\s|$)");				r = jQuery.grep( r, function(e){					return re.test(e.className || "");				}, not);			// Otherwise, find the expression to execute			} else {				var f = jQuery.expr[m[1]];				if ( typeof f != "string" )					f = jQuery.expr[m[1]][m[2]];				// Build a custom macro to enclose it				eval("f = function(a,i){" +					( jQuery.expr[ m[1] ]._prefix || "" ) +					"return " + f + "}");				// Execute it against the current filter				r = jQuery.grep( r, f, not );			}		}		// Return an array of filtered elements (r)		// and the modified expression string (t)		return { r: r, t: t };	},		getAll: function( o, r, token, name, re ) {		for ( var s = o.firstChild; s; s = s.nextSibling )			if ( s.nodeType == 1 ) {				var add = true;				if ( token == "." )					add = s.className && re.test(s.className);				else if ( token == "#" )					add = s.getAttribute("id") == name;					if ( add )

⌨️ 快捷键说明

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