X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;ds=inline;f=src%2Fjquery%2Fjquery.js;h=f986d28f8a054fce0aa04eac91d6d620ee4fb329;hb=c8b7881c738f6949095029d75d847acc98b0afbc;hp=d8fa3a6c5fc6491dd0d9d6d139f617a744076ccf;hpb=6350e8a7e027de13e33116ffd130260bda64e4bf;p=jquery.git diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index d8fa3a6..f986d28 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. * @@ -33,19 +33,19 @@ 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 if ( typeof a == "string" ) { - // HANDLE: $(html) -> $(array) var m = /^[^<]*(<.+>)[^>]*$/.exec(a); - if ( m ) - a = jQuery.clean( [ m[1] ] ); + + a = m ? + // HANDLE: $(html) -> $(array) + jQuery.clean( [ m[1] ] ) : - // HANDLE: $(expr) - else - return new jQuery( c ).find( a ); + // HANDLE: $(expr) + jQuery.find( a, c ); } return this.setArray( @@ -122,11 +122,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. * @@ -320,17 +315,17 @@ jQuery.fn = jQuery.prototype = { * Returns -1 if the object wasn't found. * * @example $("*").index( $('#foobar')[0] ) - * @before + * @beforeHello
Hello Again
+ * @beforeHello
Hello Again * @result [Hello
, Hello Again ] * * @name add @@ -946,7 +953,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
@@ -961,15 +969,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 @@ -1095,8 +1101,9 @@ jQuery.fn = jQuery.prototype = { if ( table && this.nodeName.toUpperCase() == "TABLE" && a[0].nodeName.toUpperCase() == "TR" ) obj = this.getElementsByTagName("tbody")[0] || this.appendChild(document.createElement("tbody")); - for ( var i = 0, al = a.length; i < al; i++ ) - fn.apply( obj, [ clone ? a[i].cloneNode(true) : a[i] ] ); + jQuery.each( a, function(){ + fn.apply( obj, [ clone ? this.cloneNode(true) : this ] ); + }); }); } @@ -1212,6 +1219,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 @@ -1251,13 +1262,13 @@ jQuery.extend({ return obj; }, - prop: function(elem, value, type){ + prop: function(elem, value, type, index){ // Handle executable functions - if ( value.constructor == Function ) - return value.call( elem ); + if ( jQuery.isFunction( value ) ) + return value.call( elem, [index] ); // Handle passing in a number to a CSS property - if ( value.constructor == Number && type == "css" ) + if ( value.constructor == Number && type == "curCSS" ) return value + "px"; return value; @@ -1277,7 +1288,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") @@ -1305,10 +1316,10 @@ jQuery.extend({ if ( p == "height" || p == "width" ) { var old = {}, oHeight, oWidth, d = ["Top","Bottom","Right","Left"]; - for ( var i = 0, dl = d.length; i < dl; i++ ) { - old["padding" + d[i]] = 0; - old["border" + d[i] + "Width"] = 0; - } + jQuery.each( d, function(){ + old["padding" + this] = 0; + old["border" + this + "Width"] = 0; + }); jQuery.swap( e, old, function() { if (jQuery.css(e,"display") != "none") { @@ -1344,8 +1355,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"; @@ -1363,12 +1374,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) { @@ -1384,10 +1395,11 @@ jQuery.extend({ clean: function(a) { var r = []; - for ( var i = 0, al = a.length; i < al; i++ ) { - var arg = a[i]; + jQuery.each( a, function(i,arg){ + if ( !arg ) return; - if ( !arg ) continue; + if ( arg.constructor == Number ) + arg = arg.toString(); // Convert html string into DOM nodes if ( typeof arg == "string" ) { @@ -1437,13 +1449,16 @@ jQuery.extend({ arg = div.childNodes; } + + if ( arg.length === 0 ) + return; if ( arg[0] == undefined ) r.push( arg ); else r = jQuery.merge( r, arg ); - } + }); return r; }, @@ -1486,7 +1501,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 @@ -1701,7 +1716,7 @@ jQuery.extend({ */ /* - * Wheather the W3C compliant box model is being used. + * Whether the W3C compliant box model is being used. * * @property * @name $.boxModel @@ -2177,7 +2192,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 */ @@ -2207,7 +2222,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 */