Removed comments and code related to Safari being unable to do a sync global eval...
[jquery.git] / src / core.js
index a42e8f6..0bf3530 100644 (file)
@@ -36,8 +36,14 @@ jQuery.fn = jQuery.prototype = {
                // Make sure that a selection was provided
                selector = selector || document;
 
+               // Handle $(DOMElement)
+               if ( selector.nodeType ) {
+                       this[0] = selector;
+                       this.length = 1;
+                       return this;
+
                // Handle HTML strings
-               if ( typeof selector  == "string" ) {
+               } else if ( typeof selector == "string" ) {
                        // Are we dealing with HTML string or an ID?
                        var match = quickExpr.exec( selector );
 
@@ -188,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" );
        },
 
@@ -354,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,
@@ -387,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, "");
 
                        }
 
@@ -540,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
@@ -582,7 +591,6 @@ jQuery.extend({
        },
 
        // Evalulates a script in a global context
-       // Evaluates Async. in Safari 2 :-(
        globalEval: function( data ) {
                data = jQuery.trim( data );
 
@@ -749,7 +757,7 @@ jQuery.extend({
                        elem.style[ name ] = elem.style[ "old" + name ];
        },
 
-       css: function( elem, name ) {
+       css: function( elem, name, force ) {
                if ( name == "height" || name == "width" ) {
                        var old = {}, height, width;
 
@@ -799,7 +807,7 @@ jQuery.extend({
                                width;
                }
 
-               return jQuery.curCSS( elem, name );
+               return jQuery.curCSS( elem, name, force );
        },
 
        curCSS: function( elem, name, force ) {
@@ -1033,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 ) ) 
@@ -1315,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