X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fcore.js;h=b036db89587a37ba3150b3d0e8f0d67ee17a1417;hb=bf8f3fe0942cb3d2583f0965e44594088a38ccef;hp=3aea325cd091afd33fc828d85a19262b4de0ace8;hpb=14b88f6019cd467c35a2c9e845740a61c153525e;p=jquery.git diff --git a/src/core.js b/src/core.js index 3aea325..b036db8 100644 --- a/src/core.js +++ b/src/core.js @@ -10,8 +10,8 @@ */ // Map over jQuery in case of overwrite -if ( typeof jQuery != "undefined" ) - var _jQuery = jQuery; +if ( window.jQuery ) + var _jQuery = window.jQuery; var jQuery = window.jQuery = function( selector, context ) { // If the context is a namespace object, return a new object @@ -21,8 +21,8 @@ var jQuery = window.jQuery = function( selector, context ) { }; // Map over the $ in case of overwrite -if ( typeof $ != "undefined" ) - var _$ = $; +if ( window.$ ) + var _$ = window.$; // Map the jQuery namespace to the '$' one window.$ = jQuery; @@ -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", @@ -1199,7 +1205,8 @@ jQuery.extend({ readonly: "readOnly", selected: "selected", maxlength: "maxLength", - selectedIndex: "selectedIndex" + selectedIndex: "selectedIndex", + defaultValue: "defaultValue" } }); @@ -1268,7 +1275,8 @@ jQuery.each({ jQuery.event.remove(this); jQuery.removeData(this); }); - this.parentNode.removeChild( this ); + if (this.parentNode) + this.parentNode.removeChild( this ); } }, @@ -1296,7 +1304,7 @@ jQuery.each([ "Height", "Width" ], function(i, name){ jQuery.browser.opera && document.body[ "client" + name ] || // Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths) - jQuery.browser.safari && self[ "inner" + name ] || + jQuery.browser.safari && window[ "inner" + name ] || // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] || document.body[ "client" + name ] :