Tôi đang đọc về các đoạn tài liệu và chỉnh sửa lại DOM và tự hỏi sự document.createDocumentFragment
khác nhau như thế nào document.createElement
vì có vẻ như cả hai đều không tồn tại trong DOM cho đến khi tôi nối chúng vào một phần tử DOM.
Tôi đã làm một bài kiểm tra (bên dưới) và tất cả chúng đều mất cùng một khoảng thời gian (khoảng 95 mili giây). Theo phỏng đoán, điều này có thể là do không có kiểu áp dụng cho bất kỳ phần tử nào, vì vậy có thể không chỉnh lại.
Dù sao, dựa trên ví dụ bên dưới, tại sao tôi nên sử dụng createDocumentFragment
thay vì createElement
khi chèn vào DOM và có sự khác biệt giữa hai loại này.
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');