diff --git a/src/manipulation.js b/src/manipulation.js
index 1453f98c..a10feae9 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -321,7 +321,7 @@ jQuery.fn.extend({
parent = value && value.parentNode;
// If we're in a fragment, just use that instead of building a new one
- if ( parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
results = { fragment: parent };
} else {
diff --git a/src/support.js b/src/support.js
index befc5327..c9ff58c3 100644
--- a/src/support.js
+++ b/src/support.js
@@ -56,6 +56,8 @@
// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
+ parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null,
+
// Will be defined later
checkClone: false,
scriptEval: false,
diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js
index 2492ca5d..eafbf25f 100644
--- a/test/unit/manipulation.js
+++ b/test/unit/manipulation.js
@@ -376,7 +376,8 @@ test("append(Function) with incoming value", function() {
});
test("appendTo(String|Element|Array<Element>|jQuery)", function() {
- expect(13);
+ expect(14);
+
var defaultText = 'Try them out:'
jQuery('buga').appendTo('#first');
equals( jQuery("#first").text(), defaultText + 'buga', 'Check if text appending works' );
@@ -429,6 +430,15 @@ test("appendTo(String|Element|Array<Element>|jQuery)", function() {
jQuery("ab").filter("span").appendTo( div );
equals( div.children().length, 1, "Make sure the right number of children were inserted." );
+
+ div = jQuery("#moretests div");
+
+ var num = jQuery("#main div").length;
+ div.remove().appendTo("#main");
+
+ equals( jQuery("#main div").length, num, "Make sure all the removed divs were inserted." );
+
+ reset();
});
var testPrepend = function(val) {