Je lisais à propos des fragments de document et de la refusion DOM et je me suis demandé en quoi il était document.createDocumentFragment
différent document.createElement
car il semble qu'aucun d'eux n'existait dans le DOM jusqu'à ce que je les ajoute à un élément DOM.
J'ai fait un test (ci-dessous) et tous ont pris exactement le même temps (environ 95 ms). À une supposition, cela pourrait être dû au fait qu'aucun style n'est appliqué à l'un des éléments, donc pas de redistribution peut-être.
Quoi qu'il en soit, sur la base de l'exemple ci-dessous, pourquoi devrais-je utiliser createDocumentFragment
au lieu de createElement
lors de l'insertion dans le DOM et quelle est la différence entre les deux.
var htmz = "<ul>";
for (var i = 0; i < 2001; i++) {
htmz += '<li><a href="#">link ' + i + '</a></li>';
}
htmz += '<ul>';
//createDocumentFragment
console.time('first');
var div = document.createElement("div");
div.innerHTML = htmz;
var fragment = document.createDocumentFragment();
while (div.firstChild) {
fragment.appendChild(div.firstChild);
}
$('#first').append(fragment);
console.timeEnd('first');
//createElement
console.time('second');
var span = document.createElement("span");
span.innerHTML = htmz;
$('#second').append(span);
console.timeEnd('second');
//jQuery
console.time('third');
$('#third').append(htmz);
console.timeEnd('third');