9 ], function( jQuery, toType, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
13 var rhtml = /<|&#?\w+;/;
15 function buildFragment( elems, context, scripts, selection, ignored ) {
16 var elem, tmp, tag, wrap, contains, j,
17 fragment = context.createDocumentFragment(),
22 for ( ; i < l; i++ ) {
25 if ( elem || elem === 0 ) {
28 if ( toType( elem ) === "object" ) {
30 // Support: Android <=4.0 only, PhantomJS 1 only
31 // push.apply(_, arraylike) throws on ancient WebKit
32 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
34 // Convert non-html into a text node
35 } else if ( !rhtml.test( elem ) ) {
36 nodes.push( context.createTextNode( elem ) );
38 // Convert html into DOM nodes
40 tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
42 // Deserialize a standard representation
43 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
44 wrap = wrapMap[ tag ] || wrapMap._default;
45 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
47 // Descend through wrappers to the right content
53 // Support: Android <=4.0 only, PhantomJS 1 only
54 // push.apply(_, arraylike) throws on ancient WebKit
55 jQuery.merge( nodes, tmp.childNodes );
57 // Remember the top-level container
58 tmp = fragment.firstChild;
60 // Ensure the created nodes are orphaned (#12392)
66 // Remove wrapper from fragment
67 fragment.textContent = "";
70 while ( ( elem = nodes[ i++ ] ) ) {
72 // Skip elements already in the context collection (trac-4087)
73 if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
80 contains = jQuery.contains( elem.ownerDocument, elem );
83 tmp = getAll( fragment.appendChild( elem ), "script" );
85 // Preserve script evaluation history
90 // Capture executables
93 while ( ( elem = tmp[ j++ ] ) ) {
94 if ( rscriptType.test( elem.type || "" ) ) {
104 return buildFragment;