mirror of
https://github.com/jquery/jquery.git
synced 2026-02-06 08:24:59 -05:00
Make sure the fragment isn't used if it's not the same set we're working with. Fixes #6068.
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user