Fixed #1264. If you read the bug there were many proposed changes. As it turned...
[jquery.git] / src / core.js
index 62e41c9..0f27425 100644 (file)
@@ -202,7 +202,7 @@ jQuery.fn = jQuery.prototype = {
 
        text: function( text ) {
                if ( typeof text != "object" && text != null )
-                       return this.empty().append( document.createTextNode( text ) );
+                       return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
 
                var ret = "";
 
@@ -468,7 +468,7 @@ jQuery.fn = jQuery.prototype = {
                        var obj = this;
 
                        if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) )
-                               obj = this.getElementsByTagName("tbody")[0] || this.appendChild( document.createElement("tbody") );
+                               obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") );
 
                        var scripts = jQuery( [] );
 
@@ -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
@@ -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 )
@@ -1065,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() :
                                        "";
                        }