X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fjquery%2Fjquery.js;h=c3975e3023fe6ead726c856e864dd39617b59ecc;hb=805d21c2360a10fa5e7ac85cc593b4403afb6c9f;hp=a204992adf31e65c5754ec93bb95af1eef60d08f;hpb=0382a490f5e5ee781098981db050a23d4f2e5a36;p=jquery.git diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index a204992..c3975e3 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -38,11 +38,11 @@ function jQuery(a,c) { // Watch for when a jQuery object is passed as the selector if ( a.jquery ) - return $( jQuery.merge( a, [] ) ); + return jQuery( jQuery.merge( a, [] ) ); // Watch for when a jQuery object is passed at the context if ( c && c.jquery ) - return $( c ).find(a); + return jQuery( c ).find(a); // If the context is global, return a new object if ( window == this ) @@ -69,8 +69,110 @@ function jQuery(a,c) { } // Map over the $ in case of overwrite -if ( $ ) +if ( typeof $ != "undefined" ) jQuery._$ = $; + +/** + * This function accepts a string containing a CSS selector, + * basic XPath, or raw HTML, which is then used to match a set of elements. + * The HTML string is different from the traditional selectors in that + * it creates the DOM elements representing that HTML string, on the fly, + * to be (assumedly) inserted into the document later. + * + * The core functionality of jQuery centers around this function. + * Everything in jQuery is based upon this, or uses this in some way. + * The most basic use of this function is to pass in an expression + * (usually consisting of CSS or XPath), which then finds all matching + * elements and remembers them for later use. + * + * By default, $() looks for DOM elements within the context of the + * current HTML document. + * + * @example $("div > p") + * @desc This finds all p elements that are children of a div element. + * @before

one

two

three

+ * @result [

two

] + * + * @example $("

Hello

").appendTo("#body") + * @desc Creates a div element (and all of its contents) dynamically, and appends it to the element with the ID of body. + * + * @name $ + * @param String expr An expression to search with, or a string of HTML to create on the fly. + * @cat Core + * @type jQuery + */ + +/** + * This function accepts a string containing a CSS selector, or + * basic XPath, which is then used to match a set of elements with the + * context of the specified DOM element, or document + * + * @example $("div", xml.responseXML) + * @desc This finds all div elements within the specified XML document. + * + * @name $ + * @param String expr An expression to search with. + * @param DOMElement context A DOM Element, or Document, representing the base context. + * @cat Core + * @type jQuery + */ + +/** + * Wrap jQuery functionality around a specific DOM Element. + * This function also accepts XML Documents and Window objects + * as valid arguments (even though they are not DOM Elements). + * + * @example $(document).find("div > p") + * @before

one

two

three

+ * @result [

two

] + * + * @example $(document).ready( loaded ); + * @desc Executes the "loaded" function when the DOM is ready to + * be manipulated. + * + * @name $ + * @param DOMElement elem A DOM element to be encapsulated by a jQuery object. + * @cat Core + * @type jQuery + */ + +/** + * Wrap jQuery functionality around a set of DOM Elements. + * + * @example $( myForm.elements ).hide() + * @desc Hides all the input elements within a form + * + * @name $ + * @param Array elems An array of DOM elements to be encapsulated by a jQuery object. + * @cat Core + * @type jQuery + */ + +/** + * A shorthand for $(document).ready(), allowing you to bind a function + * to be executed when the DOM document has finished loading. + * + * @example $( loaded ) + * @desc Executes the function "loaded" when the DOM is ready to be used. + * + * @name $ + * @param Function fn The function to execute when the DOM is ready. + * @cat Core + * @type jQuery + */ + +/** + * A means of creating a duplicate copy of a jQuery object. + * + * @example var div = $("div"); + * $( div ).find("p") + * @desc Locates all p elements with all div elements, without disrupting the original jQuery object contained in 'div'. + * + * @name $ + * @param jQuery obj The jQuery object to be cloned. + * @cat Core + * @type jQuery + */ // Map the jQuery namespace to the '$' one var $ = jQuery; @@ -378,8 +480,9 @@ jQuery.fn = jQuery.prototype = { for ( var j = 0; j < e.length; j++ ) { var r = e[j].childNodes; for ( var i = 0; i < r.length; i++ ) - t += r[i].nodeType != 1 ? - r[i].nodeValue : jQuery.fn.text([ r[i] ]); + if ( r[i].nodeType != 8 ) + t += r[i].nodeType != 1 ? + r[i].nodeValue : jQuery.fn.text([ r[i] ]); } return t; }, @@ -765,7 +868,7 @@ jQuery.fn = jQuery.prototype = { var old = this.get(); this.get( a ); if ( fn.constructor == Function ) - return this.each( fn ); + this.each( fn ); this.get( old ); } @@ -822,7 +925,7 @@ jQuery.extend({ var a = arguments; return this.each(function(){ for ( var j = 0; j < a.length; j++ ) - $(a[j])[n]( this ); + jQuery(a[j])[n]( this ); }); }; }); @@ -923,9 +1026,9 @@ jQuery.extend({ oHeight = e.offsetHeight; oWidth = e.offsetWidth; } else { - e = $(e.cloneNode(true)).css({ + e = jQuery(e.cloneNode(true)).css({ visibility: "hidden", position: "absolute", display: "block" - }).prependTo("body")[0]; + }).appendTo(e.parentNode)[0]; oHeight = e.clientHeight; oWidth = e.clientWidth; @@ -1025,6 +1128,7 @@ jQuery.extend({ odd: "i%2", // Child Checks + "nth-child": "jQuery.sibling(a,m[3]).cur", "first-child": "jQuery.sibling(a,0).cur", "last-child": "jQuery.sibling(a,0).last", "only-child": "jQuery.sibling(a).length==1", @@ -1108,7 +1212,7 @@ jQuery.extend({ * @test t( "Adjacent", "p + p", ["ap","en","sap"] ); * @test t( "Comma, Child, and Adjacent", "a + a, code > a", ["groups","anchor1","anchor2"] ); * @test t( "First Child", "p:first-child", ["firstp","sndp"] ); - * @test t( "Attribute Exists", "a[@title]", ["google"] ); + * @test t( "Attribute Exists", "a[@title]", ["google"] ); * @test t( "Attribute Exists", "*[@title]", ["google"] ); * @test t( "Attribute Exists", "[@title]", ["google"] ); * @test t( "Attribute Equals", "a[@rel='bookmark']", ["simon1"] ); @@ -1197,6 +1301,8 @@ jQuery.extend({ var foundToken = false; for ( var i = 0; i < jQuery.token.length; i += 2 ) { + if ( foundToken ) continue; + var re = new RegExp("^(" + jQuery.token[i] + ")"); var m = re.exec(t); @@ -1233,8 +1339,9 @@ jQuery.extend({ ); } } - } + } + if ( t ) { var val = jQuery.filter(t,r); ret = r = val.r; @@ -1265,7 +1372,9 @@ jQuery.extend({ "class": "className", "float": "cssFloat", innerHTML: "innerHTML", - className: "className" + className: "className", + value: "value", + disabled: "disabled" }; if ( fix[name] ) { @@ -1646,7 +1755,7 @@ new function() { safari: /webkit/.test(b), opera: /opera/.test(b), msie: /msie/.test(b) && !/opera/.test(b), - mozilla: /mozilla/.test(b) && !/compatible/.test(b) + mozilla: /mozilla/.test(b) && !/(compatible|webkit)/.test(b) }; // Check to see if the W3C box model is being used @@ -2383,7 +2492,7 @@ jQuery.macros = { * @param String expr An expression to filter the child Elements with * @cat DOM/Traversing */ - children: "a.childNodes" + children: "jQuery.sibling(a.firstChild)" }, each: { @@ -2453,7 +2562,7 @@ jQuery.macros = { * @cat Effects */ toggle: function(){ - $(this)[ $(this).is(":hidden") ? "show" : "hide" ].apply( $(this), arguments ); + jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ].apply( jQuery(this), arguments ); }, /** @@ -2549,7 +2658,7 @@ jQuery.macros = { * @cat DOM/Manipulation */ remove: function(a){ - if ( !a || jQuery.filter( [this], a ).r ) + if ( !a || jQuery.filter( a, [this] ).r ) this.parentNode.removeChild( this ); }, @@ -2597,7 +2706,7 @@ jQuery.macros = { */ bind: function( type, fn ) { if ( fn.constructor == String ) - fn = new Function("e", ( !fn.indexOf(".") ? "$(this)" : "return " ) + fn); + fn = new Function("e", ( !fn.indexOf(".") ? "jQuery(this)" : "return " ) + fn); jQuery.event.add( this, type, fn ); },