aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorjeresig <jeresig@gmail.com>2010-02-13 02:49:04 -0500
committerjeresig <jeresig@gmail.com>2010-02-13 02:49:04 -0500
commit726fda08bea7bbd72d73be4563aba855c63966fe (patch)
treeab9f2cc4578f3cd7e1739aeb19fedf99fa2021f2 /src
parenta7dc66b8325906066071fe5c44ce55ecf2eb5aed (diff)
downloadjquery-726fda08bea7bbd72d73be4563aba855c63966fe.tar.gz
jquery-726fda08bea7bbd72d73be4563aba855c63966fe.zip
Make sure the fragment isn't used if it's not the same set we're working with. Fixes #6068.
Diffstat (limited to 'src')
-rw-r--r--src/manipulation.js14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/manipulation.js b/src/manipulation.js
index b2a9df919..1453f98c5 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -300,7 +300,7 @@ jQuery.fn.extend({
},
domManip: function( args, table, callback ) {
- var results, first, value = args[0], scripts = [], fragment;
+ var results, first, value = args[0], scripts = [], fragment, parent;
// We can't cloneNode fragments that contain checked, in WebKit
if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
@@ -318,9 +318,12 @@ jQuery.fn.extend({
}
if ( this[0] ) {
+ parent = value && value.parentNode;
+
// If we're in a fragment, just use that instead of building a new one
- if ( args[0] && args[0].parentNode && args[0].parentNode.nodeType === 11 ) {
- results = { fragment: args[0].parentNode };
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
} else {
results = buildFragment( args, this, scripts );
}
@@ -429,9 +432,10 @@ jQuery.each({
replaceAll: "replaceWith"
}, function( name, original ) {
jQuery.fn[ name ] = function( selector ) {
- var ret = [], insert = jQuery( selector );
+ var ret = [], insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
- if ( this.length === 1 && this[0].parentNode && this[0].parentNode.nodeType === 11 && insert.length === 1 ) {
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
insert[ original ]( this[0] );
return this;