X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;ds=inline;f=src%2Fcore.js;h=b036db89587a37ba3150b3d0e8f0d67ee17a1417;hb=bf8f3fe0942cb3d2583f0965e44594088a38ccef;hp=c014f8f8cdf69e1fbb0d319b957a50b83a7086b7;hpb=d5cb977a08156c9945ae7f01fa481c2e2838d8df;p=jquery.git diff --git a/src/core.js b/src/core.js index c014f8f..b036db8 100644 --- a/src/core.js +++ b/src/core.js @@ -516,8 +516,14 @@ jQuery.extend = jQuery.fn.extend = function() { if ( target.constructor == 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" ) + target = {}; + // extend jQuery itself if only one argument is passed if ( length == 1 ) { target = this; @@ -530,12 +536,12 @@ jQuery.extend = jQuery.fn.extend = function() { // Extend the base object for ( var name in options ) { // Prevent never-ending loop - if ( target == options[ name ] ) + if ( target === options[ name ] ) continue; // Recurse if we're merging object values if ( deep && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) - jQuery.extend( target[ name ], options[ name ] ); + target[ name ] = jQuery.extend( target[ name ], options[ name ] ); // Don't bring in undefined values else if ( options[ name ] != undefined ) @@ -765,7 +771,7 @@ jQuery.extend({ // Otherwise, we need to flip out more values } else { elem = jQuery( elem.cloneNode(true) ) - .find(":radio").removeAttr("checked").end() + .find(":radio").removeAttr("checked").removeAttr("defaultChecked").end() .css({ visibility: "hidden", position: "absolute",