В даний час прийнята відповідь неправильна щодо innerHTML
повільніше (принаймні, в IE та Chrome), як правильно сказано m93a.
Chrome і FF значно швидше використовують цей метод (який знищить додані дані jquery):
var cNode = node.cloneNode(false);
node.parentNode.replaceChild(cNode, node);
у віддаленій секунді для FF та Chrome, і найшвидший в IE:
node.innerHTML = '';
InnerHTML не знищить ваші обробники подій і не порушить посилання на jquery , рекомендується також як рішення тут:
https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML .
Найшвидший метод маніпуляції з DOM (ще повільніше, ніж попередні два) - це видалення діапазону, але діапазони не підтримуються до IE9.
var range = document.createRange();
range.selectNodeContents(node);
range.deleteContents();
Інші згадані способи здаються порівнянними, але набагато повільнішими, ніж внутрішні HTML, за винятком зовнішнього, jquery (1.1.1 та 3.1.1), який значно повільніше, ніж будь-який інший:
$(node).empty();
Докази тут:
http://jsperf.com/innerhtml-vs-removechild/167 http://jsperf.com/innerhtml-vs-removechild/300
https://jsperf.com/remove-all-child-elements-of-a- dom-node-in-javascript
(новий URL для перезавантаження jsperf, оскільки редагування старої URL-адреси не працює)
Jsperf "per-test-цикл" часто розуміється як "за повторною ітерацією", і лише перша ітерація має вузли для видалення, тому результати є безглуздими, під час публікації в цій темі були неправильно встановлені тести.