diff --git a/src/manipulation.js b/src/manipulation.js index 220e09d46e..954d52edf1 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -676,7 +676,9 @@ jQuery.extend({ var tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(), wrap = wrapMap[ tag ] || wrapMap._default, depth = wrap[0], - div = context.createElement("div"); + div = context.createElement("div"), + safeChildNodes = safeFragment.childNodes, + remove; // Append wrapper element to unknown element safe doc fragment if ( context === document ) { @@ -721,6 +723,17 @@ jQuery.extend({ } elem = div.childNodes; + + // Clear elements from DocumentFragment (safeFragment or otherwise) + // to avoid hoarding elements. Fixes #11356 + if ( div ) { + div.parentNode.removeChild( div ); + remove = safeChildNodes[ safeChildNodes.length - 1 ]; + + if ( remove && remove.parentNode ) { + remove.parentNode.removeChild( remove ); + } + } } }