/base/000_base/node_modules/jquery/src/manipulation/buildFragment.js |
@@ -0,0 +1,104 @@ |
define( [ |
"../core", |
"./var/rtagName", |
"./var/rscriptType", |
"./wrapMap", |
"./getAll", |
"./setGlobalEval" |
], function( jQuery, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) { |
|
"use strict"; |
|
var rhtml = /<|&#?\w+;/; |
|
function buildFragment( elems, context, scripts, selection, ignored ) { |
var elem, tmp, tag, wrap, contains, j, |
fragment = context.createDocumentFragment(), |
nodes = [], |
i = 0, |
l = elems.length; |
|
for ( ; i < l; i++ ) { |
elem = elems[ i ]; |
|
if ( elem || elem === 0 ) { |
|
// Add nodes directly |
if ( jQuery.type( elem ) === "object" ) { |
|
// Support: Android <=4.0 only, PhantomJS 1 only |
// push.apply(_, arraylike) throws on ancient WebKit |
jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); |
|
// Convert non-html into a text node |
} else if ( !rhtml.test( elem ) ) { |
nodes.push( context.createTextNode( elem ) ); |
|
// Convert html into DOM nodes |
} else { |
tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); |
|
// Deserialize a standard representation |
tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); |
wrap = wrapMap[ tag ] || wrapMap._default; |
tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; |
|
// Descend through wrappers to the right content |
j = wrap[ 0 ]; |
while ( j-- ) { |
tmp = tmp.lastChild; |
} |
|
// Support: Android <=4.0 only, PhantomJS 1 only |
// push.apply(_, arraylike) throws on ancient WebKit |
jQuery.merge( nodes, tmp.childNodes ); |
|
// Remember the top-level container |
tmp = fragment.firstChild; |
|
// Ensure the created nodes are orphaned (#12392) |
tmp.textContent = ""; |
} |
} |
} |
|
// Remove wrapper from fragment |
fragment.textContent = ""; |
|
i = 0; |
while ( ( elem = nodes[ i++ ] ) ) { |
|
// Skip elements already in the context collection (trac-4087) |
if ( selection && jQuery.inArray( elem, selection ) > -1 ) { |
if ( ignored ) { |
ignored.push( elem ); |
} |
continue; |
} |
|
contains = jQuery.contains( elem.ownerDocument, elem ); |
|
// Append to fragment |
tmp = getAll( fragment.appendChild( elem ), "script" ); |
|
// Preserve script evaluation history |
if ( contains ) { |
setGlobalEval( tmp ); |
} |
|
// Capture executables |
if ( scripts ) { |
j = 0; |
while ( ( elem = tmp[ j++ ] ) ) { |
if ( rscriptType.test( elem.type || "" ) ) { |
scripts.push( elem ); |
} |
} |
} |
} |
|
return fragment; |
} |
|
return buildFragment; |
} ); |