/BlogEngine/BlogEngine.NET/Scripts/jquery-1.4.3-vsdoc.js
JavaScript | 8295 lines | 5904 code | 836 blank | 1555 comment | 880 complexity | b8df9c192618743de17330869a6cc6a0 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, BSD-3-Clause
Large files files are truncated, but you can click here to view the full file
- /*
- * This file has been commented to support Visual Studio Intellisense.
- * You should not use this file at runtime inside the browser--it is only
- * intended to be used only for design-time IntelliSense. Please use the
- * standard jQuery library for all production use.
- *
- * Comment version: 1.4.3a
- */
- /*!
- * jQuery JavaScript Library v1.4.3
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Thu Oct 14 23:10:06 2010 -0400
- */
- (function( window, undefined ) {
- // Use the correct document accordingly with window argument (sandbox)
- var document = window.document;
- var jQuery = (function() {
- // Define a local copy of jQuery
- var jQuery = function( selector, context ) {
- /// <summary>
- /// 1: $(expression, context) - This function accepts a string containing a CSS selector which is then used to match a set of elements.
- /// 2: $(html) - Create DOM elements on-the-fly from the provided String of raw HTML.
- /// 3: $(elements) - Wrap jQuery functionality around a single or multiple DOM Element(s).
- /// 4: $(callback) - A shorthand for $(document).ready().
- /// 5: $() - As of jQuery 1.4, if you pass no arguments in to the jQuery() method, an empty jQuery set will be returned.
- /// API: <see href="http://api.jquery.com/jQuery/">jQuery()</see>
- /// Categories: <see href="http://api.jquery.com/category/core/">Core</see>
- /// </summary>
- /// <param name="selector" type="String">
- /// 1: expression - An expression to search with.
- /// 2: html - A string of HTML to create on the fly.
- /// 3: elements - DOM element(s) to be encapsulated by a jQuery object.
- /// 4: callback - The function to execute when the DOM is ready.
- /// </param>
- /// <param name="context" type="jQuery">
- /// 1: context - A DOM Element, Document or jQuery to use as context.
- /// </param>
- /// <returns type="jQuery" />
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context );
- },
- // Map over jQuery in case of overwrite
- _jQuery = window.jQuery,
- // Map over the $ in case of overwrite
- _$ = window.$,
- // A central reference to the root jQuery(document)
- rootjQuery,
- // A simple way to check for HTML strings or ID strings
- // (both of which we optimize for)
- quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,
- // Is it a simple selector
- isSimple = /^.[^:#\[\.,]*$/,
- // Check if a string has a non-whitespace character in it
- rnotwhite = /\S/,
- rwhite = /\s/,
- // Used for trimming whitespace
- trimLeft = /^\s+/,
- trimRight = /\s+$/,
- // Check for non-word characters
- rnonword = /\W/,
- // Check for digits
- rdigit = /\d/,
- // Match a standalone tag
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
- // JSON RegExp
- rvalidchars = /^[\],:{}\s]*$/,
- rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
- rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
- // Useragent RegExp
- rwebkit = /(webkit)[ \/]([\w.]+)/,
- ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
- rmsie = /(msie) ([\w.]+)/,
- rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
- // Keep a UserAgent string for use with jQuery.browser
- userAgent = navigator.userAgent,
- // For matching the engine and version of the browser
- browserMatch,
-
- // Has the ready events already been bound?
- readyBound = false,
-
- // The functions to execute on DOM ready
- readyList = [],
- // The ready event handler
- DOMContentLoaded,
- // Save a reference to some core methods
- toString = Object.prototype.toString,
- hasOwn = Object.prototype.hasOwnProperty,
- push = Array.prototype.push,
- slice = Array.prototype.slice,
- trim = String.prototype.trim,
- indexOf = Array.prototype.indexOf,
-
- // [[Class]] -> type pairs
- class2type = {};
- jQuery.fn = jQuery.prototype = {
- init: function( selector, context ) {
- var match, elem, ret, doc;
- // Handle $(""), $(null), or $(undefined)
- if ( !selector ) {
- return this;
- }
- // Handle $(DOMElement)
- if ( selector.nodeType ) {
- this.context = this[0] = selector;
- this.length = 1;
- return this;
- }
-
- // The body element only exists once, optimize finding it
- if ( selector === "body" && !context && document.body ) {
- this.context = document;
- this[0] = document.body;
- this.selector = "body";
- this.length = 1;
- return this;
- }
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- // Are we dealing with HTML string or an ID?
- match = quickExpr.exec( selector );
- // Verify a match, and that no context was specified for #id
- if ( match && (match[1] || !context) ) {
- // HANDLE: $(html) -> $(array)
- if ( match[1] ) {
- doc = (context ? context.ownerDocument || context : document);
- // If a single string is passed in and it's a single tag
- // just do a createElement and skip the rest
- ret = rsingleTag.exec( selector );
- if ( ret ) {
- if ( jQuery.isPlainObject( context ) ) {
- selector = [ document.createElement( ret[1] ) ];
- jQuery.fn.attr.call( selector, context, true );
- } else {
- selector = [ doc.createElement( ret[1] ) ];
- }
- } else {
- ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
- selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
- }
-
- return jQuery.merge( this, selector );
-
- // HANDLE: $("#id")
- } else {
- elem = document.getElementById( match[2] );
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id !== match[2] ) {
- return rootjQuery.find( selector );
- }
- // Otherwise, we inject the element directly into the jQuery object
- this.length = 1;
- this[0] = elem;
- }
- this.context = document;
- this.selector = selector;
- return this;
- }
- // HANDLE: $("TAG")
- } else if ( !context && !rnonword.test( selector ) ) {
- this.selector = selector;
- this.context = document;
- selector = document.getElementsByTagName( selector );
- return jQuery.merge( this, selector );
- // HANDLE: $(expr, $(...))
- } else if ( !context || context.jquery ) {
- return (context || rootjQuery).find( selector );
- // HANDLE: $(expr, context)
- // (which is just equivalent to: $(context).find(expr)
- } else {
- return jQuery( context ).find( selector );
- }
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
- return rootjQuery.ready( selector );
- }
- if (selector.selector !== undefined) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
- return jQuery.makeArray( selector, this );
- },
- // Start with an empty selector
- selector: "",
- // The current version of jQuery being used
- jquery: "1.4.3",
- // The default length of a jQuery object is 0
- length: 0,
- // The number of elements contained in the matched element set
- size: function() {
- /// <summary>
- /// The number of elements currently matched.
- /// API: <see href="http://api.jquery.com/size/">.size()</see>
- /// Categories: <see href="http://api.jquery.com/category/miscellaneous/">Miscellaneous</see> > <see href="http://api.jquery.com/category/miscellaneous/dom-element-methods/">DOM Element Methods</see>
- /// </summary>
- /// <returns type="Number" />
- return this.length;
- },
- toArray: function() {
- /// <summary>
- /// Retrieve all the DOM elements contained in the jQuery set, as an array.
- /// API: <see href="http://api.jquery.com/toArray/">.toArray()</see>
- /// Categories: <see href="http://api.jquery.com/category/miscellaneous/">Miscellaneous</see> > <see href="http://api.jquery.com/category/miscellaneous/dom-element-methods/">DOM Element Methods</see>
- /// </summary>
- /// <returns type="Array" />
- return slice.call( this, 0 );
- },
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- /// <summary>
- /// Access a single matched element. num is used to access the
- /// Nth element matched.
- /// API: <see href="http://api.jquery.com/get/">.get()</see>
- /// Categories: <see href="http://api.jquery.com/category/miscellaneous/">Miscellaneous</see> > <see href="http://api.jquery.com/category/miscellaneous/dom-element-methods/">DOM Element Methods</see>
- /// </summary>
- /// <returns type="Element" />
- /// <param name="num" type="Number">
- /// Access the element in the Nth position.
- /// </param>
- return num == null ?
- // Return a 'clean' array
- this.toArray() :
- // Return just the object
- ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
- },
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems, name, selector ) {
- /// <summary>
- /// Set the jQuery object to an array of elements, while maintaining the stack.
- /// API: <see href="http://api.jquery.com/pushStack/">.pushStack()</see>
- /// Categories: <see href="http://api.jquery.com/category/plugin-authoring/">Plugin Authoring</see>
- /// </summary>
- /// <returns type="jQuery" />
- /// <param name="elems" type="Elements">
- /// An array of elements
- /// </param>
- // Build a new jQuery matched element set
- var ret = jQuery();
- if ( jQuery.isArray( elems ) ) {
- push.apply( ret, elems );
-
- } else {
- jQuery.merge( ret, elems );
- }
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
- ret.context = this.context;
- if ( name === "find" ) {
- ret.selector = this.selector + (this.selector ? " " : "") + selector;
- } else if ( name ) {
- ret.selector = this.selector + "." + name + "(" + selector + ")";
- }
- // Return the newly-formed element set
- return ret;
- },
- // Execute a callback for every element in the matched set.
- // (You can seed the arguments with an array of args, but this is
- // only used internally.)
- each: function( callback, args ) {
- /// <summary>
- /// Execute a function within the context of every matched element.
- /// This means that every time the passed-in function is executed
- /// (which is once for every element matched) the 'this' keyword
- /// points to the specific element.
- /// Additionally, the function, when executed, is passed a single
- /// argument representing the position of the element in the matched
- /// set.
- /// API: <see href="http://api.jquery.com/each/">.each()</see>
- /// Categories: <see href="http://api.jquery.com/category/core/">Core</see>
- /// </summary>
- /// <returns type="jQuery" />
- /// <param name="callback" type="Function">
- /// A function to execute
- /// </param>
- return jQuery.each( this, callback, args );
- },
-
- ready: function( fn ) {
- /// <summary>
- /// Binds a function to be executed whenever the DOM is ready to be traversed and manipulated.
- /// API: <see href="http://api.jquery.com/ready/">.ready()</see>
- /// Categories: <see href="http://api.jquery.com/category/events/">Events</see> > <see href="http://api.jquery.com/category/document-loading/">Document Loading</see>
- /// </summary>
- /// <param name="fn" type="Function">
- /// The function to be executed when the DOM is ready.
- /// </param>
- // Attach the listeners
- jQuery.bindReady();
- // If the DOM is already ready
- if ( jQuery.isReady ) {
- // Execute the function immediately
- fn.call( document, jQuery );
- // Otherwise, remember the function for later
- } else if ( readyList ) {
- // Add the function to the wait list
- readyList.push( fn );
- }
- return this;
- },
-
- eq: function( i ) {
- /// <summary>
- /// Reduce the set of matched elements to a single element.
- /// The position of the element in the set of matched elements
- /// starts at 0 and goes to length - 1.
- /// API: <see href="http://api.jquery.com/filter/">.filter()</see>
- /// Categories: <see href="http://api.jquery.com/category/filtering/">Filtering</see>
- /// </summary>
- /// <returns type="jQuery" />
- /// <param name="index" type="Number">
- /// An integer indicating the 0-based position of the element.
- /// If the index is a negative value, the index indicates the
- /// position of the element, counting backwards from the last element in the set.
- /// </param>
- return i === -1 ?
- this.slice( i ) :
- this.slice( i, +i + 1 );
- },
- first: function() {
- /// <summary>
- /// Reduce the set of matched elements to the first in the set.
- /// API: <see href="http://api.jquery.com/first/">.first()</see>
- /// Categories: <see href="http://api.jquery.com/category/filtering/">Filtering</see>
- /// </summary>
- /// <returns type="jQuery" />
-
- return this.eq( 0 );
- },
- last: function() {
- /// <summary>
- /// Reduce the set of matched elements to the final one in the set.
- /// API: <see href="http://api.jquery.com/last/">.last()</see>
- /// Categories: <see href="http://api.jquery.com/category/filtering/">Filtering</see>
- /// </summary>
- /// <returns type="jQuery" />
-
- return this.eq( -1 );
- },
- slice: function() {
- /// <summary>
- /// Reduce the set of matched elements to a subset specified by a range of indices.
- /// Behaves exactly like the built-in Array slice method.
- /// API: <see href="http://api.jquery.com/slice/">.slice()</see>
- /// Categories: <see href="http://api.jquery.com/category/filtering/">Filtering</see>
- /// </summary>
- /// <param name="start" type="Number" integer="true">
- /// An integer indicating the 0-based position at which the elements begin to be
- /// selected. If negative, it indicates an offset from the end of the set.
- /// </param>
- /// <param name="end" optional="true" type="Number" integer="true">
- /// An integer indicating the 0-based position at which the elements stop being
- /// selected. If negative, it indicates an offset from the end of the set.
- /// If omitted, the range continues until the end of the set.
- /// </param>
- /// <returns type="jQuery">The sliced elements</returns>
-
- return this.pushStack( slice.apply( this, arguments ),
- "slice", slice.call(arguments).join(",") );
- },
- map: function( callback ) {
- /// <summary>
- /// This member is internal.
- /// </summary>
- /// <private />
- /// <returns type="jQuery" />
-
- return this.pushStack( jQuery.map(this, function( elem, i ) {
- return callback.call( elem, i, elem );
- }));
- },
-
- end: function() {
- /// <summary>
- /// End the most recent 'destructive' filtering operation, reverting the list of matched elements
- /// back to its previous state. After an end operation, the list of matched elements will
- /// revert to the last state of matched elements.
- /// If there was no destructive operation before, an empty set is returned.
- /// API: <see href="http://api.jquery.com/end/">.end()</see>
- /// Categories: <see href="http://api.jquery.com/category/traversing/traversal/">Traversal/</see> > <see href="http://api.jquery.com/category/traversing/miscellaneous-traversal/">Miscellaneous Traversal/</see>
- /// </summary>
- /// <returns type="jQuery" />
-
- return this.prevObject || jQuery(null);
- },
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: push,
- sort: [].sort,
- splice: [].splice
- };
- // Give the init function the jQuery prototype for later instantiation
- jQuery.fn.init.prototype = jQuery.fn;
- jQuery.extend = jQuery.fn.extend = function() {
- /// <summary>
- /// Merge the contents of two or more objects together into the first
- /// object and returns the original, modified object.
- /// API: <see href="http://api.jquery.com/jQuery.extend/">jQuery.extend()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <remarks>
- /// This is a great utility for simple inheritance.
- /// jQuery.extend(settings, options);
- /// var settings = jQuery.extend({}, defaults, options);
- /// </remarks>
- /// <param name="target" type="Object">
- /// The object to extend
- /// </param>
- /// <param name="prop1" type="Object">
- /// The object that will be merged into the first.
- /// </param>
- /// <param name="propN" type="Object" optional="true" parameterArray="true">
- /// (optional) More objects to merge into the first
- /// </param>
- /// <returns type="Object" />
- // copy reference to target object
- var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy, copyIsArray;
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
- target = {};
- }
- // extend jQuery itself if only one argument is passed
- if ( length === i ) {
- target = this;
- --i;
- }
- for ( ; i < length; i++ ) {
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null ) {
- // Extend the base object
- for ( name in options ) {
- src = target[ name ];
- copy = options[ name ];
- // Prevent never-ending loop
- if ( target === copy ) {
- continue;
- }
- // Recurse if we're merging plain objects or arrays
- if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
- if ( copyIsArray ) {
- copyIsArray = false;
- clone = src && jQuery.isArray(src) ? src : [];
- } else {
- clone = src && jQuery.isPlainObject(src) ? src : {};
- }
- // Never move original objects, clone them
- target[ name ] = jQuery.extend( deep, clone, copy );
- // Don't bring in undefined values
- } else if ( copy !== undefined ) {
- target[ name ] = copy;
- }
- }
- }
- }
- // Return the modified object
- return target;
- };
- jQuery.extend({
- noConflict: function( deep ) {
- /// <summary>
- /// Relinquish jQuery's control of the $ variable.
- /// Run this function to give control of the $ variable back
- /// to whichever library first implemented it.
- /// API: <see href="http://api.jquery.com/jQuery.noConflict/">jQuery.noConflict()</see>
- /// Categories: <see href="http://api.jquery.com/category/core/">Core</see>
- /// </summary>
- /// <remarks>
- /// This helps to make sure that jQuery doesn't conflict with the $ object
- /// of other libraries.
- /// By using this function, you will only be able to access jQuery
- /// using the 'jQuery' variable. For example, where you used to do
- /// $("div p"), you now must do jQuery("div p").
- /// </remarks>
- /// <param name="removeAll" type="Boolean" optional="true">
- /// (optional) A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself).
- /// </param>
- /// <returns type="Object" />
-
- window.$ = _$;
- if ( deep ) {
- window.jQuery = _jQuery;
- }
- return jQuery;
- },
-
- // Is the DOM ready to be used? Set to true once it occurs.
- isReady: false,
- // A counter to track how many items to wait for before
- // the ready event fires. See #6781
- readyWait: 1,
-
- // Handle when the DOM is ready
- ready: function( wait ) {
- /// <summary>
- /// This method is internal.
- /// </summary>
- /// <private />
-
- // A third-party is pushing the ready event forwards
- if ( wait === true ) {
- jQuery.readyWait--;
- }
- // Make sure that the DOM is not already loaded
- if ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( !document.body ) {
- return setTimeout( jQuery.ready, 1 );
- }
- // Remember that the DOM is ready
- jQuery.isReady = true;
- // If a normal DOM Ready event fired, decrement, and wait if need be
- if ( wait !== true && --jQuery.readyWait > 0 ) {
- return;
- }
- // If there are functions bound, to execute
- if ( readyList ) {
- // Execute all of them
- var fn, i = 0;
- while ( (fn = readyList[ i++ ]) ) {
- fn.call( document, jQuery );
- }
- // Reset the list of functions
- readyList = null;
- }
- // Trigger any bound ready events
- if ( jQuery.fn.triggerHandler ) {
- jQuery( document ).triggerHandler( "ready" );
- }
- }
- },
-
- bindReady: function() {
- /// <summary>
- /// This method is internal.
- /// </summary>
- /// <private />
-
- if ( readyBound ) {
- return;
- }
- readyBound = true;
- // Catch cases where $(document).ready() is called after the
- // browser event has already occurred.
- if ( document.readyState === "complete" ) {
- // Handle it asynchronously to allow scripts the opportunity to delay ready
- return setTimeout( jQuery.ready, 1 );
- }
- // Mozilla, Opera and webkit nightlies currently support this event
- if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", jQuery.ready, false );
- // If IE event model is used
- } else if ( document.attachEvent ) {
- // ensure firing before onload,
- // maybe late but safe also for iframes
- document.attachEvent("onreadystatechange", DOMContentLoaded);
-
- // A fallback to window.onload, that will always work
- window.attachEvent( "onload", jQuery.ready );
- // If IE and not a frame
- // continually check to see if the document is ready
- var toplevel = false;
- try {
- toplevel = window.frameElement == null;
- } catch(e) {}
- if ( document.documentElement.doScroll && toplevel ) {
- doScrollCheck();
- }
- }
- },
- // See test/unit/core.js for details concerning isFunction.
- // Since version 1.3, DOM methods and functions like alert
- // aren't supported. They return false on IE (#2968).
- isFunction: function( obj ) {
- /// <summary>
- /// Determine if the argument passed is a Javascript function object.
- /// API: <see href="http://api.jquery.com/jQuery.isFunction/">jQuery.isFunction()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="obj" type="Object">
- /// Object to test whether or not it is a function.
- /// </param>
- /// <returns type="Boolean">
- /// True if the parameter is a function; otherwise false.
- /// </returns>
-
- return jQuery.type(obj) === "function";
- },
- isArray: Array.isArray || function( obj ) {
- /// <summary>
- /// Determine if the argument is an array.
- /// API: <see href="http://api.jquery.com/jQuery.isArray/">jQuery.isArray()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="obj" type="Object">
- /// Object to test whether or not it is an array.
- /// </param>
- /// <returns type="Boolean">
- /// True if the parameter is an array; otherwise false.
- /// </returns>
-
- return jQuery.type(obj) === "array";
- },
- // A crude way of determining if an object is a window
- isWindow: function( obj ) {
- /// <summary>
- /// Determine whether the argument is a window.
- /// API: <see href="http://api.jquery.com/jQuery.isWindow/">jQuery.isWindow()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="obj" type="Object">
- /// Object to test whether or not it is a window.
- /// </param>
- /// <returns type="Boolean">
- /// True if the parameter is a window; otherwise false.
- /// </returns>
-
- return obj && typeof obj === "object" && "setInterval" in obj;
- },
- isNaN: function( obj ) {
- /// <summary>
- /// Determine whether the argument is a number.
- /// API: <see href="http://api.jquery.com/jQuery.isNaN/">jQuery.isNaN()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="obj" type="Object">
- /// Object to test whether or not it is a number.
- /// </param>
- /// <returns type="Boolean">
- /// True if the parameter is a number; otherwise false.
- /// </returns>
- return obj == null || !rdigit.test( obj ) || isNaN( obj );
- },
- type: function( obj ) {
- /// <summary>
- /// Determine whether the argument is a number.
- /// API: <see href="http://api.jquery.com/jQuery.type/">jQuery.type()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="obj" type="Object">
- /// Object to get the internal JavaScript [[Class]] of.
- /// </param>
- /// <returns type="String">
- /// True if the parameter is a number; otherwise false.
- /// </returns>
-
- return obj == null ?
- String( obj ) :
- class2type[ toString.call(obj) ] || "object";
- },
- isPlainObject: function( obj ) {
- /// <summary>
- /// Check to see if an object is a plain object (created using "{}" or "new Object").
- /// API: <see href="http://api.jquery.com/jQuery.isPlainObject/">jQuery.isPlainObject()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="obj" type="Object">
- /// The object that will be checked to see if it's a plain object.
- /// </param>
- /// <returns type="Boolean" />
-
- // Must be an Object.
- // Because of IE, we also have to check the presence of the constructor property.
- // Make sure that DOM nodes and window objects don't pass through, as well
- if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
- return false;
- }
-
- // Not own constructor property must be Object
- if ( obj.constructor &&
- !hasOwn.call(obj, "constructor") &&
- !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
-
- var key;
- for ( key in obj ) {}
-
- return key === undefined || hasOwn.call( obj, key );
- },
- isEmptyObject: function( obj ) {
- /// <summary>
- /// Check to see if an object is empty (contains no properties).
- /// API: <see href="http://api.jquery.com/jQuery.isEmptyObject/">jQuery.isEmptyObject()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="obj" type="Object">
- /// The object that will be checked to see if it's empty.
- /// </param>
- /// <returns type="Boolean" />
-
- for ( var name in obj ) {
- return false;
- }
- return true;
- },
-
- error: function( msg ) {
- throw msg;
- },
-
- parseJSON: function( data ) {
- /// <summary>
- /// Takes a well-formed JSON string and returns the resulting JavaScript object.
- /// API: <see href="http://api.jquery.com/jQuery.parseJSON/">jQuery.parseJSON()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="obj" type="Object">
- /// The object that will be checked to see if it's empty.
- /// </param>
- /// <returns type="Object" />
-
- if ( typeof data !== "string" || !data ) {
- return null;
- }
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
- data = jQuery.trim( data );
-
- // Make sure the incoming data is actual JSON
- // Logic borrowed from http://json.org/json2.js
- if ( rvalidchars.test(data.replace(rvalidescape, "@")
- .replace(rvalidtokens, "]")
- .replace(rvalidbraces, "")) ) {
- // Try to use the native JSON parser first
- return window.JSON && window.JSON.parse ?
- window.JSON.parse( data ) :
- (new Function("return " + data))();
- } else {
- jQuery.error( "Invalid JSON: " + data );
- }
- },
- noop: function() {
- /// <summary>
- /// An empty function.
- /// API: <see href="http://api.jquery.com/jQuery.noop/">jQuery.noop()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <returns type="Function" />
- },
- // Evalulates a script in a global context
- globalEval: function( data ) {
- /// <summary>
- /// Execute some JavaScript code globally.
- /// API: <see href="http://api.jquery.com/jQuery.globalEval/">jQuery.globalEval()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
-
- if ( data && rnotwhite.test(data) ) {
- // Inspired by code by Andrea Giammarchi
- // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
- var head = document.getElementsByTagName("head")[0] || document.documentElement,
- script = document.createElement("script");
- script.type = "text/javascript";
- if ( jQuery.support.scriptEval ) {
- script.appendChild( document.createTextNode( data ) );
- } else {
- script.text = data;
- }
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709).
- head.insertBefore( script, head.firstChild );
- head.removeChild( script );
- }
- },
- nodeName: function( elem, name ) {
- /// <summary>
- /// Checks whether the specified element has the specified DOM node name.
- /// </summary>
- /// <param name="elem" type="Element">
- /// The element to examine
- /// </param>
- /// <param name="name" type="String">
- /// The node name to check
- /// </param>
- /// <returns type="Boolean">True if the specified node name matches the node's DOM node name; otherwise false</returns>
-
- return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
- },
- // args is for internal usage only
- each: function( object, callback, args ) {
- /// <summary>
- /// A generic iterator function, which can be used to seamlessly iterate over both objects and arrays.
- /// Arrays and array-like objects with a length property (such as a function's arguments object) are
- /// iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties.
- /// the first, and the value as the second.
- /// API: <see href="http://api.jquery.com/jQuery.each/">jQuery.each()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="obj" type="Object">
- /// The object, or array, to iterate over.
- /// </param>
- /// <param name="fn" type="Function">
- /// The function that will be executed on every object.
- /// </param>
- /// <returns type="Object" />
-
- var name, i = 0,
- length = object.length,
- isObj = length === undefined || jQuery.isFunction(object);
- if ( args ) {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.apply( object[ name ], args ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.apply( object[ i++ ], args ) === false ) {
- break;
- }
- }
- }
- // A special, fast, case for the most common use of each
- } else {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
- break;
- }
- }
- } else {
- for ( var value = object[0];
- i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
- }
- }
- return object;
- },
- // Use native String.trim function wherever possible
- trim: trim ?
- function( text ) {
- /// <summary>
- /// Remove the whitespace from the beginning and end of a string.
- /// API: <see href="http://api.jquery.com/jQuery.trim/">jQuery.trim()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <returns type="String" />
- /// <param name="text" type="String">
- /// The string to trim.
- /// </param>
-
- return text == null ?
- "" :
- trim.call( text );
- } :
- // Otherwise use our own trimming functionality
- function( text ) {
- return text == null ?
- "" :
- text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
- },
- // results is for internal usage only
- makeArray: function( array, results ) {
- /// <summary>
- /// Convert an array-like object into a true JavaScript array.
- /// API: <see href="http://api.jquery.com/jQuery.makeArray/">jQuery.makeArray()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="array" type="Object">
- /// Any object to turn into a native Array.
- /// </param>
- /// <returns type="Array" />
-
- var ret = results || [];
- if ( array != null ) {
- // The window, strings (and functions) also have 'length'
- // The extra typeof function check is to prevent crashes
- // in Safari 2 (See: #3039)
- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
- var type = jQuery.type(array);
- if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
- push.call( ret, array );
- } else {
- jQuery.merge( ret, array );
- }
- }
- return ret;
- },
- inArray: function( elem, array ) {
- /// <summary>
- /// Search for a specified value within an array and return its index (or -1 if not found).
- /// API: <see href="http://api.jquery.com/jQuery.inArray/">jQuery.inArray()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// Part of JavaScript
- /// </summary>
- /// <param name="value" type="Any">
- /// The value to search for.
- /// </param>
- /// <param name="array" type="Array">
- /// An array through which to search.
- /// </param>
- /// <returns type="Array" />
-
- if ( array.indexOf ) {
- return array.indexOf( elem );
- }
- for ( var i = 0, length = array.length; i < length; i++ ) {
- if ( array[ i ] === elem ) {
- return i;
- }
- }
- return -1;
- },
- merge: function( first, second ) {
- /// <summary>
- /// Merge the contents of two arrays together into the first array.
- /// API: <see href="http://api.jquery.com/jQuery.merge/">jQuery.merge()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="first" type="Array">
- /// The first array to merge.
- /// </param>
- /// <param name="second" type="Array">
- /// The second array to merge.
- /// </param>
- /// <returns type="Array" />
-
- var i = first.length, j = 0;
- if ( typeof second.length === "number" ) {
- for ( var l = second.length; j < l; j++ ) {
- first[ i++ ] = second[ j ];
- }
-
- } else {
- while ( second[j] !== undefined ) {
- first[ i++ ] = second[ j++ ];
- }
- }
- first.length = i;
- return first;
- },
- grep: function( elems, callback, inv ) {
- /// <summary>
- /// Finds the elements of an array which satisfy a filter function. The original array is not affected.
- /// API: <see href="http://api.jquery.com/jQuery.grep/">jQuery.grep()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <remarks>
- /// The specified function will be passed two arguments: The
- /// current array item and the index of the item in the array. The
- /// function must return 'true' to keep the item in the array,
- /// false to remove it.
- /// });
- /// Part of JavaScript
- /// </remarks>
- /// <param name="array" type="Array">
- /// The array to search through.
- /// </param>
- /// <param name="function(elementOfArray, indexInArray)" type="Function">
- /// The function to process each item against. The first argument to the function is the item, and the second argument is the index. The function should return a Boolean value. this will be the global window object.
- /// </param>
- /// <param name="inv" type="Boolean">
- /// If "invert" is false, or not provided, then the function returns an array consisting of all elements for which "callback" returns true. If "invert" is true, then the function returns an array consisting of all elements for which "callback" returns false.
- /// </param>
- /// <returns type="Array" />
-
- var ret = [], retVal;
- inv = !!inv;
- // Go through the array, only saving the items
- // that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- retVal = !!callback( elems[ i ], i );
- if ( inv !== retVal ) {
- ret.push( elems[ i ] );
- }
- }
- return ret;
- },
- // arg is for internal usage only
- map: function( elems, callback, arg ) {
- /// <summary>
- /// Translate all items in an array or array-like object to another array of items.
- /// API: <see href="http://api.jquery.com/jQuery.map/">jQuery.map()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <remarks>
- /// The translation function that is provided to this method is
- /// called for each item in the array and is passed one argument:
- /// The item to be translated.
- /// The function can then return the translated value, 'null'
- /// (to remove the item), or an array of values - which will
- /// be flattened into the full array.
- /// </remarks>
- /// <returns type="Array" />
- /// <param name="elems" type="Array">
- /// array The Array to translate.
- /// </param>
- /// <param name="fn" type="Function">
- /// The function to process each item against.
- /// </param>
-
- var ret = [], value;
- // Go through the array, translating each of the items to their
- // new value (or values).
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
- return ret.concat.apply( [], ret );
- },
- // A global GUID counter for objects
- guid: 1,
- proxy: function( fn, proxy, thisObject ) {
- /// <summary>
- /// Takes a function and returns a new one that will always have a particular scope.
- /// API: <see href="http://api.jquery.com/jQuery.proxy/">jQuery.proxy()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="fn" type="Function">
- /// The function whose scope will be changed.
- /// </param>
- /// <param name="proxy" type="Object">
- /// The object to which the scope of the function should be set.
- /// </param>
- /// <returns type="Function" />
-
- if ( arguments.length === 2 ) {
- if ( typeof proxy === "string" ) {
- thisObject = fn;
- fn = thisObject[ proxy ];
- proxy = undefined;
- } else if ( proxy && !jQuery.isFunction( proxy ) ) {
- thisObject = proxy;
- proxy = undefined;
- }
- }
- if ( !proxy && fn ) {
- proxy = function() {
- return fn.apply( thisObject || this, arguments );
- };
- }
- // Set the guid of unique handler to the same of original handler, so it can be removed
- if ( fn ) {
- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
- }
- // So proxy can be declared as an argument
- return proxy;
- },
- // Mutifunctional method to get and set values to a collection
- // The value/s can be optionally by executed if its a function
- access: function( elems, key, value, exec, fn, pass ) {
- /// <summary>
- /// This member is internal.
- /// </summary>
- /// <private />
-
- var length = elems.length;
-
- // Setting many attributes
- if ( typeof key === "object" ) {
- for ( var k in key ) {
- jQuery.access( elems, k, key[k], exec, fn, value );
- }
- return elems;
- }
-
- // Setting one attribute
- if ( value !== undefined ) {
- // Optionally, function values get executed if exec is true
- exec = !pass && exec && jQuery.isFunction(value);
-
- for ( var i = 0; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
- }
-
- return elems;
- }
-
- // Getting an attribute
- return length ? fn( elems[0], key ) : undefined;
- },
- now: function() {
- /// <summary>
- /// Returns the number of milliseconds since midnight of January 1, 1970 and the current date and time.
- /// </summary>
- /// <returns type="Number" integer="true" />
-
- return (new Date()).getTime();
- },
- // Use of jQuery.browser is frowned upon.
- // More details: http://docs.jquery.com/Utilities/jQuery.browser
- uaMatch: function( ua ) {
- ua = ua.toLowerCase();
- var match = rwebkit.exec( ua ) ||
- ropera.exec( ua ) ||
- rmsie.exec( ua ) ||
- ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
- [];
- return { browser: match[1] || "", version: match[2] || "0" };
- },
- browser: {}
- });
- // Populate the class2type map
- jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
- });
- browserMatch = jQuery.uaMatch( userAgent );
- if ( browserMatch.browser ) {
- jQuery.browser[ browserMatch.browser ] = true;
- jQuery.browser.version = browserMatch.version;
- }
- // Deprecated, use jQuery.browser.webkit instead
- if ( jQuery.browser.webkit ) {
- jQuery.browser.safari = true;
- }
- if ( indexOf ) {
- jQuery.inArray = function( elem, array ) {
- /// <summary>
- /// Search for a specified value within an array and return its index (or -1 if not found).
- /// API: <see href="http://api.jquery.com/jQuery.inArray/">jQuery.inArray()</see>
- /// Categories: <see href="http://api.jquery.com/category/utilities/">Utilities</see>
- /// </summary>
- /// <param name="value">
- /// The value to search for.
- // </param>
- /// <param name="array" type="Array">
- /// An array through which to search.
- /// </param>
- /// <returns type="Number" integer="true">The 0-based index of the item if it was found, otherwise -1.</returns>
-
- return indexOf.call( array, elem );
- };
- }
- // Verify that \s matches non-breaking spaces
- // (IE fails on this test)
- if ( !rwhite.test( "\xA0" ) ) {
- trimLeft = /^[\s\xA0]+/;
- trimRight = /[\s\xA0]+$/;
- }
- // All jQuery objects should point back to these
- rootjQuery = jQuery(document);
- // Cleanup functions for the document ready method
- if ( document.addEventListener ) {
- DOMContentLoaded = function() {
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
- jQuery.ready();
- };
- } else if ( document.attachEvent ) {
- DOMContentLoaded = function() {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( document.readyState === "complete" ) {
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
- jQuery.ready();
- }
- };
- }
- // The DOM ready check for Internet Explorer
- function doScrollCheck() {
- if ( jQuery.isReady ) {
- return;
- }
- try {
- // If IE is used, use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- document.documentElement.doScroll("left");
- } catch(e) {
- setTimeout( doScrollCheck, 1 );
- return;
- }
- // and execute any waiting functions
- jQuery.ready();
- }
- // Expose jQuery to the global object
- return (window.jQuery = window.$ = jQuery);
- })();
- // [vsdoc] The following function has been modified for IntelliSense.
- // [vsdoc] Stubbing support properties to "false" for IntelliSense compat.
- (function() {
- jQuery.support = {};
- var root = document.documentElement,
- script = document.createElement("script"),
- div = document.createElement("div"),
- id = "script" + jQuery.now();
- div.style.display = "none";
- div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
- var all = div.getElementsByTagName("*"),
- a = div.getElementsByTagName("a")[0],
- select = document.createElement("select"),
- opt = select.appendChild( document.createElement("option") );
- // Can't get basic test support
- if ( !all || !all.length || !a ) {
- return;
- }
- jQuery.support = {
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: div.firstChild.nodeType === 3,
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
- // Get the style information from getAttribute
- // (IE uses .cssText insted)
- style: /red/.test( a.getAttribute("style") ),
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: a.getAttribute("href") === "/a",
- // Make sure that element opacity exists
- // (IE uses filter instead)
- // Use a regex to work around a WebKit issue. See #5145
- opacity: /^0.55$/.test( a.style.opacity ),
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
- // Make sure that if no value is specified for a checkbox
- // that it defaults to "on".
- // (WebKit defaults to "" instead)
- checkOn: div.getElementsByTagName("input")[0].value === "on",
- // Make sure that a selected-by-default option has a working selected property.
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
- optSelected: opt.selected,
- // Will be defined later
- optDisabled: false,
- checkClone: false,
- scriptEval: false,
- noCloneEvent: true,
- boxModel: null,
- inlineBlockNeedsLayout: false,
- shrinkWrapBlocks: false,
- reliableHiddenOffsets: true
- };
- // Make sure that the options inside disabled selects aren't marked as disabled
- // (WebKit marks them as diabled)
- select.disabled = true;
- jQuery.support.optDisabled = !opt.disabled;
- script.type = "text/javascript";
- try {
- script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
- } catch(e) {}
- root.insertBefore( script, root.firstChild );
- // Make sure that the execution of code works by injecting a script
- // tag with appendChild/createTextNode
- // (IE doesn't support this, fails, and uses .text instead)
- if ( window[ id ] ) {
- jQuery.support.scriptEval = true;
- delete window[ id ];
- }
- root.removeChild( script );
- if ( div.attachEvent && div.fireEvent ) {
- div.attachEvent("onclick", function click() {
- // Cloning a node shouldn't copy over any
- // bound event handlers (IE does this)
- jQuery.support.noCloneEvent = false;
- div.detachEvent("onclick", click);
- });
- div.cloneNode(true).fireEvent("onclick");
- }
- div = document.createElement("div");
- div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
- var fragment = document.createDocumentFragment();
- fragment.appendChild( div.firstChild );
- // WebKit doesn't clone checked state correctly in fragments
- jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
- // Figure out if the W3C box model works as expected
- // document.body must exist before we can do this
- jQuery(function() {
- var div = document.createElement("div");
- div.style.width = div.style.paddingLeft = "1px";
- document.body.appendChild( div );
- jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
- if ( "zoom" in div.style ) {
- // Check if natively block-level elements act like inline-block
- // elements when setting their display to 'inline' and giving
- // them layout
- // (IE < 8 does this)
- div.style.display = "inline";
- div.style.zoom = 1;
- jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;
- // Check if elements with layout shrink-wrap their children
- // (IE 6 does this)
- div.style.display = "";
- div.innerHTML = "<div style='width:4px;'></div>";
- jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;
- }
- div.innerHTML = "<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";
- var tds = div.getElementsByTagName("td");
- // Check if table cells still have offsetWidth/Height when they are set
- // to display:none and there are still other visible table cells in a
- // table row; if so, offsetWidth/Height are not reliable for use when
- // determining if an element has been hidden directly using
- // display:none (it is still safe to use offsets if a parent element is
- // hidden; don safety goggles and see bug #4512 for more information).
- // (only IE 8 fails this test)
- jQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;
- tds[0].style.display = "";
- tds[1].style.display = "none";
- // Check if empty table cells still have offsetWidth/Height
- // (IE < 8 fail this test)
- jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;
- div.innerHTML = "";
- document.body.removeChild( div ).style.display = "none";
- div = tds = null;
- });
- // Technique from Juriy Zaytsev
- // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
- var eventSupported = function( eventName ) {
- var el = document.createElement("div");
- eventName = "on" + eventName;
- var isSupported = (eventName in el);
- if ( !isSupported ) {
- el.setAttribute(eventName, "return;");
- isSupported = typeof el[eventName] === "function";
- }
- el = null;
- return isSupported;
- };
- jQuery.support.submitBubbles = eventSupported("submit");
- jQuery.support.changeBubbles = eventSupported("change");
- // release memory in IE
- root = script = div = all = a = null;
- })();
- jQuery.props = {
- "for": "htmlFor",
- "class": "className",
- readonly: "readOnly",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- rowspan: "rowSpan",
- colspan: "colSpan",
- tabindex: "tabIndex",
- usemap: "useMap",
- frameborder: "frameBorder"
- };
- var windowData = {},
- rbrace = /^(?:\{.*\}|\[.*\])$/;
- jQuery.extend({
- cache: {},
- // Please use with caution
- uuid: 0,
- // Unique for each copy of jQuery on the page
- expando: "jQuery" + jQuery.now(),
- // The following elements thr…
Large files files are truncated, but you can click here to view the full file