@@ -205,25 +205,27 @@ function jqLiteIsTextNode(html) {
205
205
function jqLiteBuildFragment ( html , context ) {
206
206
var elem , tmp , tag , wrap ,
207
207
fragment = context . createDocumentFragment ( ) ,
208
- nodes = [ ] , i ;
208
+ nodes = [ ] , i , j , jj ;
209
209
210
210
if ( jqLiteIsTextNode ( html ) ) {
211
211
// Convert non-html into a text node
212
212
nodes . push ( context . createTextNode ( html ) ) ;
213
213
} else {
214
+ tmp = fragment . appendChild ( context . createElement ( 'div' ) ) ;
214
215
// Convert html into DOM nodes
215
- tmp = tmp || fragment . appendChild ( context . createElement ( "div" ) ) ;
216
216
tag = ( TAG_NAME_REGEXP . exec ( html ) || [ "" , "" ] ) [ 1 ] . toLowerCase ( ) ;
217
217
wrap = wrapMap [ tag ] || wrapMap . _default ;
218
- tmp . innerHTML = wrap [ 1 ] + html . replace ( XHTML_TAG_REGEXP , "<$1></$2>" ) + wrap [ 2 ] ;
218
+ tmp . innerHTML = '<div> </div>' +
219
+ wrap [ 1 ] + html . replace ( XHTML_TAG_REGEXP , "<$1></$2>" ) + wrap [ 2 ] ;
220
+ tmp . removeChild ( tmp . firstChild ) ;
219
221
220
222
// Descend through wrappers to the right content
221
223
i = wrap [ 0 ] ;
222
224
while ( i -- ) {
223
225
tmp = tmp . lastChild ;
224
226
}
225
227
226
- nodes = concat ( nodes , tmp . childNodes ) ;
228
+ for ( j = 0 , jj = tmp . childNodes . length ; j < jj ; ++ j ) nodes . push ( tmp . childNodes [ j ] ) ;
227
229
228
230
tmp = fragment . firstChild ;
229
231
tmp . textContent = "" ;
@@ -232,11 +234,7 @@ function jqLiteBuildFragment(html, context) {
232
234
// Remove wrapper from fragment
233
235
fragment . textContent = "" ;
234
236
fragment . innerHTML = "" ; // Clear inner HTML
235
- forEach ( nodes , function ( node ) {
236
- fragment . appendChild ( node ) ;
237
- } ) ;
238
-
239
- return fragment ;
237
+ return nodes ;
240
238
}
241
239
242
240
function jqLiteParseHTML ( html , context ) {
@@ -247,11 +245,7 @@ function jqLiteParseHTML(html, context) {
247
245
return [ context . createElement ( parsed [ 1 ] ) ] ;
248
246
}
249
247
250
- if ( ( parsed = jqLiteBuildFragment ( html , context ) ) ) {
251
- return parsed . childNodes ;
252
- }
253
-
254
- return [ ] ;
248
+ return jqLiteBuildFragment ( html , context ) ;
255
249
}
256
250
257
251
/////////////////////////////////////////////
@@ -271,6 +265,8 @@ function JQLite(element) {
271
265
272
266
if ( isString ( element ) ) {
273
267
jqLiteAddNodes ( this , jqLiteParseHTML ( element ) ) ;
268
+ var fragment = jqLite ( document . createDocumentFragment ( ) ) ;
269
+ fragment . append ( this ) ;
274
270
} else {
275
271
jqLiteAddNodes ( this , element ) ;
276
272
}
0 commit comments