X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;ds=inline;f=src%2Fjquery%2Fjquery.js;h=b01038766ff64b58fe5d4bf1f372cb64cb55ffda;hb=2b82ffbbfac419e017acea3e0f83c063549e545e;hp=cc0af5212b8d6a443496008a24d1b18b109dfef5;hpb=f2ff0db0320cfab0d856ff68d012cb843c97b600;p=jquery.git diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index cc0af52..b010387 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -33,7 +33,7 @@ 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) && !a.nodeType && a[0] == undefined ) return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( a ); // Handle HTML strings @@ -154,10 +154,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 = { @@ -432,7 +440,7 @@ jQuery.fn = jQuery.prototype = { for ( var prop in obj ) jQuery.attr( type ? this.style : this, - prop, jQuery.prop(this, obj[prop]) + prop, jQuery.prop(this, obj[prop], type) ); }); }, @@ -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.
* @resultTest Paragraph.
* @desc Changes the color of all paragraphs to red * + * @example $("p").css("left",30); + * @beforeTest Paragraph.
+ * @resultTest 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 ) { @@ -534,7 +548,7 @@ jQuery.fn = jQuery.prototype = { "textContent" : "innerText"; return e == undefined ? - this.length && this[0][ type ] : + jQuery.map(this, function(a){ return a[ type ]; }).join("") : this.each(function(){ this[ type ] = e; }); }, @@ -799,6 +813,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 +864,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,7 +915,7 @@ 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) { @@ -910,18 +925,18 @@ jQuery.fn = jQuery.prototype = { jQuery.grep(this,function(a){ if ( t.constructor == Array || t.jquery ) - return !jQuery.inArray( t, a ); + return jQuery.inArray( t, a ) < 0; else return 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") - * @beforeHello
Hello Again
+ * @beforeHello
Hello Again * @result [Hello
, Hello Again ] * * @name add @@ -931,7 +946,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") * @beforeHello
@@ -946,15 +962,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") ) * @beforeHello
Hello Again
* @result [Hello
, Hello Again ] * - * @example $("p").add([document.getElementById("a"), document.getElementById("b")]) - * @beforeHello
Hello AgainAnd Again
- * @result [Hello
, Hello Again, And Again ] + * @example $("p").add( document.forms[0].elements ) + * @beforeHello
+ * @result [Hello
, , ] * * @name add * @type jQuery @@ -1197,6 +1211,10 @@ jQuery.extend({ $ = jQuery._$; }, + isFunction: function( fn ) { + return fn && typeof fn == "function"; + }, + /** * A generic iterator function, which can be used to seemlessly * iterate over both objects and arrays. This function is not the same @@ -1236,10 +1254,16 @@ jQuery.extend({ return obj; }, - prop: function(elem, value){ - // Handle executable functions - return value.constructor == Function && - value.call( elem ) || value; + prop: function(elem, value, type){ + // Handle executable functions + if ( jQuery.isFunction( value ) ) + return value.call( elem ); + + // Handle passing in a number to a CSS property + if ( value.constructor == Number && type == "curCSS" ) + return value + "px"; + + return value; }, className: { @@ -1256,7 +1280,7 @@ jQuery.extend({ elem.className = c ? jQuery.grep( elem.className.split(/\s+/), function(cur){ return !jQuery.className.has( c, cur ); - }).join(' ') : ""; + }).join(" ") : ""; }, // internal only, use is(".class") @@ -1323,8 +1347,8 @@ jQuery.extend({ curCSS: function(elem, prop, force) { var ret; - if (prop == 'opacity' && jQuery.browser.msie) - return jQuery.attr(elem.style, 'opacity'); + if (prop == "opacity" && jQuery.browser.msie) + return jQuery.attr(elem.style, "opacity"); if (prop == "float" || prop == "cssFloat") prop = jQuery.browser.msie ? "styleFloat" : "cssFloat"; @@ -1342,12 +1366,12 @@ jQuery.extend({ if ( cur ) ret = cur.getPropertyValue(prop); - else if ( prop == 'display' ) - ret = 'none'; + else if ( prop == "display" ) + ret = "none"; else - jQuery.swap(elem, { display: 'block' }, function() { - var c = document.defaultView.getComputedStyle(this, ''); - ret = c && c.getPropertyValue(prop) || ''; + jQuery.swap(elem, { display: "block" }, function() { + var c = document.defaultView.getComputedStyle(this, ""); + ret = c && c.getPropertyValue(prop) || ""; }); } else if (elem.currentStyle) { @@ -1362,9 +1386,14 @@ jQuery.extend({ clean: function(a) { var r = []; - + for ( var i = 0, al = a.length; i < al; i++ ) { var arg = a[i]; + + if ( !arg ) continue; + + if ( arg.constructor == Number ) + arg = arg.toString(); // Convert html string into DOM nodes if ( typeof arg == "string" ) { @@ -1415,7 +1444,7 @@ jQuery.extend({ arg = div.childNodes; } - if ( arg.nodeType ) + if ( arg[0] == undefined ) r.push( arg ); else r = jQuery.merge( r, arg ); @@ -1463,7 +1492,7 @@ jQuery.extend({ if ( value != undefined ) elem[fix[name]] = value; return elem[fix[name]]; - } else if ( value == undefined && jQuery.browser.msie && elem.nodeName && elem.nodeName.toUpperCase() == 'FORM' && (name == 'action' || name == 'method') ) + } else if ( value == undefined && jQuery.browser.msie && elem.nodeName && elem.nodeName.toUpperCase() == "FORM" && (name == "action" || name == "method") ) return elem.getAttributeNode(name).nodeValue; // IE elem.getAttribute passes even for style @@ -1678,7 +1707,7 @@ jQuery.extend({ */ /* - * Wheather the W3C compliant box model is being used. + * Whether the W3C compliant box model is being used. * * @property * @name $.boxModel @@ -2154,7 +2183,7 @@ jQuery.each( [ "eq", "lt", "gt", "contains" ], function(i,n){ * * @name width * @type jQuery - * @param Number|String val Set the CSS property to the specified value. + * @param String|Number val Set the CSS property to the specified value. * @cat CSS */ @@ -2184,7 +2213,7 @@ jQuery.each( [ "eq", "lt", "gt", "contains" ], function(i,n){ * * @name height * @type jQuery - * @param Number|String val Set the CSS property to the specified value. + * @param String|Number val Set the CSS property to the specified value. * @cat CSS */