From 628e1564c48f2b4d18ed5af89ebed88b09d972d4 Mon Sep 17 00:00:00 2001 From: Dave Methvin Date: Sun, 6 Dec 2009 09:06:00 +0800 Subject: [PATCH 1/2] 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); From abbd2f4c3c93d9550cea81ccd6d6187c115eeb56 Mon Sep 17 00:00:00 2001 From: Dave Methvin Date: Sun, 6 Dec 2009 10:02:15 +0800 Subject: [PATCH 2/2] Fix regexp for $.trim so it doesn't whack embedded spaces. --- src/core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core.js b/src/core.js index 4949d6bf..2968d8d6 100644 --- a/src/core.js +++ b/src/core.js @@ -29,7 +29,7 @@ var jQuery = function( selector, context ) { rnotwhite = /\S/, // Used for trimming whitespace - rtrim = /(\s|\u00A0)+|(\s|\u00A0)+$/g, + rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g, // Match a standalone tag rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,