Bug Tracker

Ticket #1264: patch.txt

File patch.txt, 2.8 KB (added by flamefork, 15 years ago)
Line 
1@@ -42,7 +42,7 @@
2                // HANDLE: $(html) -> $(array)
3                var m = /^[^<]*(<(.|\s)+>)[^>]*$/.exec(a);
4                if ( m )
5-                       a = jQuery.clean( [ m[1] ] );
6+                       a = jQuery.clean( [ m[1] ], c );
7               
8                // HANDLE: $(expr)
9                else
10@@ -554,8 +554,8 @@
11         * @cat DOM/Attributes
12         */
13        text: function(e) {
14-               if ( typeof e == "string" )
15-                       return this.empty().append( document.createTextNode( e ) );
16+               if ( typeof e == "string" && this.length )
17+                       return this.empty().append( this.get(0).ownerDocument.createTextNode( e ) );
18 
19                var t = "";
20                jQuery.each( e || this, function(){
21@@ -616,7 +616,7 @@
22         */
23        wrap: function() {
24                // The elements to wrap the target around
25-               var a = jQuery.clean(arguments);
26+               var a = jQuery.clean(arguments, this);
27 
28                // Wrap each of the matched elements individually
29                return this.each(function(){
30@@ -667,7 +667,7 @@
31        append: function() {
32                return this.domManip(arguments, true, 1, function(a){
33                        this.appendChild( a );
34-               });
35+               }, this);
36        },
37 
38        /**
39@@ -1122,9 +1122,9 @@
40         * @type jQuery
41         * @cat Core
42         */
43-       domManip: function(args, table, dir, fn){
44+       domManip: function(args, table, dir, fn, context){
45                var clone = this.length > 1;
46-               var a = jQuery.clean(args);
47+               var a = jQuery.clean(args, context);
48                if ( dir < 0 )
49                        a.reverse();
50 
51@@ -1132,7 +1132,7 @@
52                        var obj = this;
53 
54                        if ( table && jQuery.nodeName(this, "table") && jQuery.nodeName(a[0], "tr") )
55-                               obj = this.getElementsByTagName("tbody")[0] || this.appendChild(document.createElement("tbody"));
56+                               obj = this.getElementsByTagName("tbody")[0] || this.appendChild(this.ownerDocument.createElement("tbody"));
57 
58                        jQuery.each( a, function(){
59                                fn.apply( obj, [ clone ? this.cloneNode(true) : this ] );
60@@ -1442,10 +1442,21 @@
61                return ret;
62        },
63       
64-       clean: function(a) {
65+       clean: function(a, context) {
66                var r = [];
67+        var contextDoc = document;
68+        if (context) {
69+            if (context instanceof jQuery && context.length) {
70+                context = context.get(0);
71+            }
72+            if (context.ownerDocument) {
73+                contextDoc = context.ownerDocument;
74+            } else if (context.body) {
75+                contextDoc = context;
76+            }
77+        }
78 
79-               jQuery.each( a, function(i,arg){
80+        jQuery.each( a, function(i,arg){
81                        if ( !arg ) return;
82 
83                        if ( arg.constructor == Number )
84@@ -1454,7 +1465,7 @@
85                         // Convert html string into DOM nodes
86                        if ( typeof arg == "string" ) {
87                                // Trim whitespace, otherwise indexOf won't work as expected
88-                               var s = jQuery.trim(arg), div = document.createElement("div"), tb = [];
89+                               var s = jQuery.trim(arg), div = contextDoc.createElement("div"), tb = [];
90 
91                                var wrap =
92                                         // option or optgroup