Fix for #4011, crash when two text nodes are appended in IE.

This commit is contained in:
Dave Methvin 2009-12-06 09:06:00 +08:00 committed by John Resig
parent 3c89e38fc2
commit 628e1564c4
2 changed files with 6 additions and 3 deletions

View file

@ -388,7 +388,7 @@ jQuery.extend({
context = context.ownerDocument || context[0] && context[0].ownerDocument || document; context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
} }
var ret = [], div = context.createElement("div"); var ret = [];
jQuery.each(elems, function(i, elem){ jQuery.each(elems, function(i, elem){
if ( typeof elem === "number" ) { if ( typeof elem === "number" ) {
@ -408,7 +408,8 @@ jQuery.extend({
// Trim whitespace, otherwise indexOf won't work as expected // Trim whitespace, otherwise indexOf won't work as expected
var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(), var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
wrap = wrapMap[ tag ] || wrapMap._default, 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 // Go to html and back, then peel off extra wrappers
div.innerHTML = wrap[1] + elem + wrap[2]; div.innerHTML = wrap[1] + elem + wrap[2];

View file

@ -151,7 +151,7 @@ test("unwrap()", function() {
}); });
var testAppend = function(valueObj) { var testAppend = function(valueObj) {
expect(21); expect(22);
var defaultText = 'Try them out:' var defaultText = 'Try them out:'
var result = jQuery('#first').append(valueObj('<b>buga</b>')); var result = jQuery('#first').append(valueObj('<b>buga</b>'));
equals( result.text(), defaultText + 'buga', 'Check if text appending works' ); 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"] ); t( "Append Select", "#appendSelect1, #appendSelect2", ["appendSelect1", "appendSelect2"] );
equals( "Two nodes", jQuery('<div />').append("Two", " nodes").text(), "Appending two text nodes (#4011)" );
// using contents will get comments regular, text, and comment nodes // using contents will get comments regular, text, and comment nodes
var j = jQuery("#nonnodes").contents(); var j = jQuery("#nonnodes").contents();
var d = jQuery("<div/>").appendTo("#nonnodes").append(j); var d = jQuery("<div/>").appendTo("#nonnodes").append(j);