| 1 | define( [
|
| 2 | "../core",
|
| 3 | "../core/toType",
|
| 4 | "../core/isAttached",
|
| 5 | "./var/rtagName",
|
| 6 | "./var/rscriptType",
|
| 7 | "./wrapMap",
|
| 8 | "./getAll",
|
| 9 | "./setGlobalEval"
|
| 10 | ], function( jQuery, toType, isAttached, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
|
| 11 |
|
| 12 | "use strict";
|
| 13 |
|
| 14 | var rhtml = /<|&#?\w+;/;
|
| 15 |
|
| 16 | function buildFragment( elems, context, scripts, selection, ignored ) {
|
| 17 | var elem, tmp, tag, wrap, attached, j,
|
| 18 | fragment = context.createDocumentFragment(),
|
| 19 | nodes = [],
|
| 20 | i = 0,
|
| 21 | l = elems.length;
|
| 22 |
|
| 23 | for ( ; i < l; i++ ) {
|
| 24 | elem = elems[ i ];
|
| 25 |
|
| 26 | if ( elem || elem === 0 ) {
|
| 27 |
|
| 28 |
|
| 29 | if ( toType( elem ) === "object" ) {
|
| 30 |
|
| 31 |
|
| 32 |
|
| 33 | jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
|
| 34 |
|
| 35 |
|
| 36 | } else if ( !rhtml.test( elem ) ) {
|
| 37 | nodes.push( context.createTextNode( elem ) );
|
| 38 |
|
| 39 |
|
| 40 | } else {
|
| 41 | tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
|
| 42 |
|
| 43 |
|
| 44 | tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
|
| 45 | wrap = wrapMap[ tag ] || wrapMap._default;
|
| 46 | tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
|
| 47 |
|
| 48 |
|
| 49 | j = wrap[ 0 ];
|
| 50 | while ( j-- ) {
|
| 51 | tmp = tmp.lastChild;
|
| 52 | }
|
| 53 |
|
| 54 |
|
| 55 |
|
| 56 | jQuery.merge( nodes, tmp.childNodes );
|
| 57 |
|
| 58 |
|
| 59 | tmp = fragment.firstChild;
|
| 60 |
|
| 61 |
|
| 62 | tmp.textContent = "";
|
| 63 | }
|
| 64 | }
|
| 65 | }
|
| 66 |
|
| 67 |
|
| 68 | fragment.textContent = "";
|
| 69 |
|
| 70 | i = 0;
|
| 71 | while ( ( elem = nodes[ i++ ] ) ) {
|
| 72 |
|
| 73 |
|
| 74 | if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
|
| 75 | if ( ignored ) {
|
| 76 | ignored.push( elem );
|
| 77 | }
|
| 78 | continue;
|
| 79 | }
|
| 80 |
|
| 81 | attached = isAttached( elem );
|
| 82 |
|
| 83 |
|
| 84 | tmp = getAll( fragment.appendChild( elem ), "script" );
|
| 85 |
|
| 86 |
|
| 87 | if ( attached ) {
|
| 88 | setGlobalEval( tmp );
|
| 89 | }
|
| 90 |
|
| 91 |
|
| 92 | if ( scripts ) {
|
| 93 | j = 0;
|
| 94 | while ( ( elem = tmp[ j++ ] ) ) {
|
| 95 | if ( rscriptType.test( elem.type || "" ) ) {
|
| 96 | scripts.push( elem );
|
| 97 | }
|
| 98 | }
|
| 99 | }
|
| 100 | }
|
| 101 |
|
| 102 | return fragment;
|
| 103 | }
|
| 104 |
|
| 105 | return buildFragment;
|
| 106 | } );
|