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 + -
显示快捷键?