Landed a proper fix for #3255 - which involves doing createElement instead of going...
authorJohn Resig <jeresig@gmail.com>
Sat, 3 Jan 2009 00:51:07 +0000 (00:51 +0000)
committerJohn Resig <jeresig@gmail.com>
Sat, 3 Jan 2009 00:51:07 +0000 (00:51 +0000)
src/core.js
test/unit/core.js

index 2688a46..592c9a0 100644 (file)
@@ -819,6 +819,14 @@ jQuery.extend({
                if ( typeof context.createElement === "undefined" )
                        context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
 
+               // If a single string is passed in and it's a single tag
+               // just do a createElement and skip the rest
+               if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
+                       var match = /^<(\w+)\/?>$/.exec(elems[0]);
+                       if ( match )
+                               return [ context.createElement( match[1] ) ];
+               }
+
                var ret = [], scripts = [], div = context.createElement("div");
 
                jQuery.each(elems, function(i, elem){
@@ -915,12 +923,6 @@ jQuery.extend({
 
                });
 
-               // Clean up
-               // Safari 3.1 throws an exception when a colgroup is created
-               try {
-                       div.innerHTML = "";
-               } catch(e){}
-               
                if ( fragment ) {
                        for ( var i = 0; ret[i]; i++ ) {
                                var node = ret[i];
index 9a1cecb..451bd71 100644 (file)
@@ -254,7 +254,7 @@ test("isFunction", function() {
 var foo = false;
 
 test("jQuery('html')", function() {
-       expect(6);
+       expect(8);
 
        reset();
        foo = false;
@@ -267,7 +267,9 @@ test("jQuery('html')", function() {
        reset();
        ok( jQuery("<link rel='stylesheet'/>")[0], "Creating a link" );
 
-       reset();
+       ok( !jQuery("<script/>")[0].parentNode, "Create a script" );
+
+       ok( jQuery("<input/>").attr("type", "hidden"), "Create an input and set the type." );
 
        var j = jQuery("<span>hi</span> there <!-- mon ami -->");
        ok( j.length >= 2, "Check node,textnode,comment creation (some browsers delete comments)" );