Ben edildi belge parçaları hakkında okuma ve DOM yeniden akıtma ve nasıl merak document.createDocumentFragment
farklıydı document.createElement
ben bir DOM öğesine bunları eklemek kadar ikisi de DOM var gibi görünüyor gibi.
Bir test yaptım (aşağıda) ve hepsi tam olarak aynı süreyi aldı (yaklaşık 95 ms). Tahminen bu, muhtemelen öğelerin hiçbirine stil uygulanmamış olmasından kaynaklanıyor olabilir, bu nedenle yeniden düzenleme olmayabilir.
Her neyse, aşağıdaki örneğe göre , DOM'a eklerken neden createDocumentFragment
yerine kullanmalıyım createElement
ve ikisi arasındaki fark nedir?
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');