Fixed #1763 by checking to see if .createElement() is available on the context and...
[jquery.git] / src / core.js
index ce26519..ce487a1 100644 (file)
@@ -396,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, "");
 
                        }
 
@@ -530,7 +530,7 @@ jQuery.extend = jQuery.fn.extend = function() {
        }
 
        // Handle case when target is a string or something (possible in deep copy)
-       if ( typeof target != "object" )
+       if ( typeof target != "object" && typeof target != "function" )
                target = {};
 
        // extend jQuery itself if only one argument is passed
@@ -549,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
@@ -591,7 +591,6 @@ jQuery.extend({
        },
 
        // Evalulates a script in a global context
-       // Evaluates Async. in Safari 2 :-(
        globalEval: function( data ) {
                data = jQuery.trim( data );
 
@@ -918,6 +917,8 @@ jQuery.extend({
        clean: function( elems, context ) {
                var ret = [];
                context = context || document;
+               if (!context.createElement) 
+                       context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
 
                jQuery.each(elems, function(i, elem){
                        if ( !elem )
@@ -1042,7 +1043,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 ) ) 
@@ -1064,7 +1066,7 @@ jQuery.extend({
                                                (parseFloat( value ).toString() == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
                                }
        
-                               return elem.filter ? 
+                               return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
                                        (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100).toString() :
                                        "";
                        }