Removed comments and code related to Safari being unable to do a sync global eval...
[jquery.git] / src / core.js
index b701abe..0bf3530 100644 (file)
@@ -43,7 +43,7 @@ jQuery.fn = jQuery.prototype = {
                        return this;
 
                // Handle HTML strings
-               } else if ( typeof selector  == "string" ) {
+               } else if ( typeof selector == "string" ) {
                        // Are we dealing with HTML string or an ID?
                        var match = quickExpr.exec( selector );
 
@@ -194,6 +194,9 @@ jQuery.fn = jQuery.prototype = {
        },
 
        css: function( key, value ) {
+               // ignore negative width and height values
+               if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
+                       value = undefined;
                return this.attr( key, value, "curCSS" );
        },
 
@@ -360,7 +363,7 @@ jQuery.fn = jQuery.prototype = {
 
                        if ( this.length ) {
                                var elem = this[0];
-                       
+
                                // We need to handle select boxes special
                                if ( jQuery.nodeName( elem, "select" ) ) {
                                        var index = elem.selectedIndex,
@@ -393,7 +396,7 @@ jQuery.fn = jQuery.prototype = {
                                        
                                // Everything else, we just grab the value
                                } else
-                                       return this[0].value.replace(/\r/g, "");
+                                       return (this[0].value || "").replace(/\r/g, "");
 
                        }
 
@@ -546,7 +549,7 @@ jQuery.extend = jQuery.fn.extend = function() {
                                        continue;
 
                                // Recurse if we're merging object values
-                               if ( deep && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType )
+                               if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType )
                                        target[ name ] = jQuery.extend( target[ name ], options[ name ] );
 
                                // Don't bring in undefined values
@@ -588,7 +591,6 @@ jQuery.extend({
        },
 
        // Evalulates a script in a global context
-       // Evaluates Async. in Safari 2 :-(
        globalEval: function( data ) {
                data = jQuery.trim( data );
 
@@ -1039,7 +1041,8 @@ jQuery.extend({
                                if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
                                        throw "type property can't be changed";
 
-                               elem.setAttribute( name, value );
+                               // convert the value to a string (all browsers do this but IE) see #1070
+                               elem.setAttribute( name, "" + value );
                        }
 
                        if ( jQuery.browser.msie && /href|src/.test( name ) && !jQuery.isXMLDoc( elem ) ) 
@@ -1321,7 +1324,7 @@ jQuery.each([ "Height", "Width" ], function(i, name){
                        this[0] == document ?
                                // Either scroll[Width/Height] or offset[Width/Height], whichever is greater (Mozilla reports scrollWidth the same as offsetWidth)
                                Math.max( document.body[ "scroll" + name ], document.body[ "offset" + name ] ) :
-        
+
                                // Get or set width or height on the element
                                size == undefined ?
                                        // Get width or height on the element