8 ], function( jQuery, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
10 var rhtml = /<|&#?\w+;/;
12 function buildFragment( elems, context, scripts, selection, ignored ) {
13 var elem, tmp, tag, wrap, contains, j,
14 fragment = context.createDocumentFragment(),
19 for ( ; i < l; i++ ) {
22 if ( elem || elem === 0 ) {
25 if ( jQuery.type( elem ) === "object" ) {
26 // Support: Android<4.1, PhantomJS<2
27 // push.apply(_, arraylike) throws on ancient WebKit
28 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
30 // Convert non-html into a text node
31 } else if ( !rhtml.test( elem ) ) {
32 nodes.push( context.createTextNode( elem ) );
34 // Convert html into DOM nodes
36 tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
38 // Deserialize a standard representation
39 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
40 wrap = wrapMap[ tag ] || wrapMap._default;
41 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
43 // Descend through wrappers to the right content
49 // Support: Android<4.1, PhantomJS<2
50 // push.apply(_, arraylike) throws on ancient WebKit
51 jQuery.merge( nodes, tmp.childNodes );
53 // Remember the top-level container
54 tmp = fragment.firstChild;
56 // Ensure the created nodes are orphaned (#12392)
62 // Remove wrapper from fragment
63 fragment.textContent = "";
66 while ( ( elem = nodes[ i++ ] ) ) {
68 // Skip elements already in the context collection (trac-4087)
69 if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
76 contains = jQuery.contains( elem.ownerDocument, elem );
79 tmp = getAll( fragment.appendChild( elem ), "script" );
81 // Preserve script evaluation history
86 // Capture executables
89 while ( ( elem = tmp[ j++ ] ) ) {
90 if ( rscriptType.test( elem.type || "" ) ) {
100 return buildFragment;