X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fjquery%2Fjquery.js;h=e58f895df21d94f54b2dc5cbfe92120c5f5dfde4;hb=495ecb70b2b097e7d4a1ffe46d44562210cdc051;hp=cc0af5212b8d6a443496008a24d1b18b109dfef5;hpb=f2ff0db0320cfab0d856ff68d012cb843c97b600;p=jquery.git diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index cc0af52..e58f895 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -1,7 +1,7 @@ /* * jQuery @VERSION - New Wave Javascript * - * Copyright (c) 2006 John Resig (jquery.com) + * Copyright (c) 2007 John Resig (jquery.com) * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * @@ -32,14 +32,13 @@ var jQuery = function(a,c) { // HANDLE: $(function) // Shortcut for document ready - // Safari reports typeof on DOM NodeLists as a function - if ( typeof a == "function" && !a.nodeType && a[0] == undefined ) + if ( jQuery.isFunction(a) ) return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( a ); // Handle HTML strings if ( typeof a == "string" ) { // HANDLE: $(html) -> $(array) - var m = /^[^<]*(<.+>)[^>]*$/.exec(a); + var m = /^[^<]*(<(.|\s)+>)[^>]*$/.exec(a); if ( m ) a = jQuery.clean( [ m[1] ] ); @@ -122,11 +121,6 @@ var $ = jQuery; * 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

] - * @desc Same as $("div > p") because the document - * * @example $(document.body).background( "black" ); * @desc Sets the background color of the page to black. * @@ -154,10 +148,18 @@ var $ = jQuery; * }); * @desc Executes the function when the DOM is ready to be used. * + * @example jQuery(function($) { + * // Your code using failsafe $ alias here... + * }); + * @desc Uses both the shortcut for $(document).ready() and the argument + * to write failsafe jQuery code using the $ alias, without relying on the + * global alias. + * * @name $ * @param Function fn The function to execute when the DOM is ready. * @cat Core * @type jQuery + * @see ready(Function) */ jQuery.fn = jQuery.prototype = { @@ -255,9 +257,9 @@ jQuery.fn = jQuery.prototype = { * @cat Core */ pushStack: function( a ) { - var ret = jQuery(this); + var ret = jQuery(a); ret.prevObject = this; - return ret.setArray( a ); + return ret; }, /** @@ -312,17 +314,17 @@ jQuery.fn = jQuery.prototype = { * Returns -1 if the object wasn't found. * * @example $("*").index( $('#foobar')[0] ) - * @before
+ * @before
* @result 0 * @desc Returns the index for the element with ID foobar * - * @example $("*").index( $('#foo')) - * @before
+ * @example $("*").index( $('#foo')[0] ) + * @before
* @result 2 - * @desc Returns the index for the element with ID foo + * @desc Returns the index for the element with ID foo within another element * - * @example $("*").index( $('#bar')) - * @before
+ * @example $("*").index( $('#bar')[0] ) + * @before
* @result -1 * @desc Returns -1, as there is no element with ID bar * @@ -408,10 +410,16 @@ jQuery.fn = jQuery.prototype = { * @result * @desc Sets title attribute from src attribute. * + * @example $("img").attr("title", function(index) { return this.title + (i + 1); }); + * @before + * @result + * @desc Enumerate title attribute. + * * @name attr * @type jQuery * @param String key The name of the property to set. * @param Function value A function returning the value to set. + * Scope: Current element, argument: Index of current element * @cat DOM/Attributes */ attr: function( key, value, type ) { @@ -420,19 +428,19 @@ jQuery.fn = jQuery.prototype = { // Look for the case where we're accessing a style value if ( key.constructor == String ) if ( value == undefined ) - return jQuery[ type || "attr" ]( this[0], key ); + return this.length && jQuery[ type || "attr" ]( this[0], key ) || undefined; else { obj = {}; obj[ key ] = value; } // Check to see if we're setting style values - return this.each(function(){ + return this.each(function(index){ // Set all the styles for ( var prop in obj ) jQuery.attr( type ? this.style : this, - prop, jQuery.prop(this, obj[prop]) + prop, jQuery.prop(this, obj[prop], type, index, prop) ); }); }, @@ -477,16 +485,22 @@ jQuery.fn = jQuery.prototype = { /** * Set a single style property to a value, on all matched elements. + * If a number is provided, it is automatically converted into a pixel value. * * @example $("p").css("color","red"); * @before

Test Paragraph.

* @result

Test Paragraph.

* @desc Changes the color of all paragraphs to red * + * @example $("p").css("left",30); + * @before

Test Paragraph.

+ * @result

Test Paragraph.

+ * @desc Changes the left of all paragraphs to "30px" + * * @name css * @type jQuery * @param String key The name of the property to set. - * @param Object value The value to set the property to. + * @param String|Number value The value to set the property to. * @cat CSS */ css: function( key, value ) { @@ -530,12 +544,18 @@ jQuery.fn = jQuery.prototype = { * @cat DOM/Attributes */ text: function(e) { - var type = this.length && this[0].innerText == undefined ? - "textContent" : "innerText"; - - return e == undefined ? - this.length && this[0][ type ] : - this.each(function(){ this[ type ] = e; }); + if ( typeof e == "string" ) + return this.empty().append( document.createTextNode( e ) ); + + var t = ""; + jQuery.each( e || this, function(){ + jQuery.each( this.childNodes, function(){ + if ( this.nodeType != 8 ) + t += this.nodeType != 1 ? + this.nodeValue : jQuery.fn.text([ this ]); + }); + }); + return t; }, /** @@ -783,7 +803,7 @@ jQuery.fn = jQuery.prototype = { find: function(t) { return this.pushStack( jQuery.map( this, function(a){ return jQuery.find(t,a); - }) ); + }), t ); }, /** @@ -799,6 +819,7 @@ jQuery.fn = jQuery.prototype = { * * @name clone * @type jQuery + * @param Boolean deep (Optional) Set to false if you don't want to clone all descendant nodes, in addition to the element itself. * @cat DOM/Manipulation */ clone: function(deep) { @@ -849,7 +870,7 @@ jQuery.fn = jQuery.prototype = { */ filter: function(t) { return this.pushStack( - t.constructor == Function && + jQuery.isFunction( t ) && jQuery.grep(this, function(el, index){ return t.apply(el, [index]) }) || @@ -900,28 +921,28 @@ jQuery.fn = jQuery.prototype = { * * @name not * @type jQuery - * @param Array|jQuery elems A set of elements to remove from the jQuery set of matched elements. + * @param jQuery elems A set of elements to remove from the jQuery set of matched elements. * @cat DOM/Traversing */ not: function(t) { return this.pushStack( t.constructor == String && - jQuery.multiFilter(t,this,true) || - - jQuery.grep(this,function(a){ - if ( t.constructor == Array || t.jquery ) - return !jQuery.inArray( t, a ); - else - return a != t; - }) ); + jQuery.multiFilter(t, this, true) || + + jQuery.grep(this, function(a) { + return ( t.constructor == Array || t.jquery ) + ? jQuery.inArray( a, t ) < 0 + : a != t; + }) + ); }, /** - * Adds the elements matched by the expression to the jQuery object. This - * can be used to concatenate the result sets of two expressions. + * Adds more elements, matched by the given expression, + * to the set of matched elements. * * @example $("p").add("span") - * @before

Hello

Hello Again

+ * @before

Hello

Hello Again * @result [

Hello

, Hello Again ] * * @name add @@ -931,7 +952,8 @@ jQuery.fn = jQuery.prototype = { */ /** - * Adds the on the fly created elements to the jQuery object. + * Adds more elements, created on the fly, to the set of + * matched elements. * * @example $("p").add("Again") * @before

Hello

@@ -946,15 +968,13 @@ jQuery.fn = jQuery.prototype = { /** * Adds one or more Elements to the set of matched elements. * - * This is used to add a set of Elements to a jQuery object. - * * @example $("p").add( document.getElementById("a") ) * @before

Hello

Hello Again

* @result [

Hello

, Hello Again ] * - * @example $("p").add([document.getElementById("a"), document.getElementById("b")]) - * @before

Hello

Hello AgainAnd Again

- * @result [

Hello

, Hello Again, And Again ] + * @example $("p").add( document.forms[0].elements ) + * @before

Hello