From 628e1564c48f2b4d18ed5af89ebed88b09d972d4 Mon Sep 17 00:00:00 2001 From: Dave Methvin Date: Sun, 6 Dec 2009 09:06:00 +0800 Subject: [PATCH] Fix for #4011, crash when two text nodes are appended in IE. --- src/manipulation.js | 5 +++-- test/unit/manipulation.js | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/manipulation.js b/src/manipulation.js index 7128d11c..7d7038ee 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -388,7 +388,7 @@ jQuery.extend({ context = context.ownerDocument || context[0] && context[0].ownerDocument || document; } - var ret = [], div = context.createElement("div"); + var ret = []; jQuery.each(elems, function(i, elem){ if ( typeof elem === "number" ) { @@ -408,7 +408,8 @@ jQuery.extend({ // Trim whitespace, otherwise indexOf won't work as expected var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(), wrap = wrapMap[ tag ] || wrapMap._default, - depth = wrap[0]; + depth = wrap[0], + div = context.createElement("div"); // Go to html and back, then peel off extra wrappers div.innerHTML = wrap[1] + elem + wrap[2]; diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index c8ea240b..75a1baa1 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -151,7 +151,7 @@ test("unwrap()", function() { }); var testAppend = function(valueObj) { - expect(21); + expect(22); var defaultText = 'Try them out:' var result = jQuery('#first').append(valueObj('buga')); equals( result.text(), defaultText + 'buga', 'Check if text appending works' ); @@ -224,6 +224,8 @@ var testAppend = function(valueObj) { t( "Append Select", "#appendSelect1, #appendSelect2", ["appendSelect1", "appendSelect2"] ); + equals( "Two nodes", jQuery('
').append("Two", " nodes").text(), "Appending two text nodes (#4011)" ); + // using contents will get comments regular, text, and comment nodes var j = jQuery("#nonnodes").contents(); var d = jQuery("
").appendTo("#nonnodes").append(j);