我正在阅读有关文档片段和DOM重排的信息,想知道它们与DOM中不存在什么document.createDocumentFragment
区别,document.createElement
直到我将它们附加到DOM元素上为止。
我做了一个测试(如下),所有这些都花费了完全相同的时间(约95ms)。猜测可能是由于没有将样式应用于任何元素,因此可能没有重排。
无论如何,基于下面的示例,为什么在插入DOM时我应该使用createDocumentFragment
而不是为什么createElement
,两者之间的区别是什么?
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');