Aktualnie akceptowana odpowiedź jest błędna, jeśli chodzi o innerHTML
spowolnienie (przynajmniej w IE i Chrome), jak słusznie wspomniano m93a.
Chrome i FF są znacznie szybsze przy użyciu tej metody (która zniszczy załączone dane jquery):
var cNode = node.cloneNode(false);
node.parentNode.replaceChild(cNode, node);
w odległej sekundzie dla FF i Chrome, a najszybszy w IE:
node.innerHTML = '';
InnerHTML nie niszczy programów obsługi zdarzeń ani nie niszczy odniesień do jquery , jest również zalecane jako rozwiązanie tutaj:
https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML .
Najszybszą metodą manipulacji DOM (nadal wolniejszą niż dwie poprzednie) jest usunięcie zakresu, ale zakresy nie są obsługiwane do IE9.
var range = document.createRange();
range.selectNodeContents(node);
range.deleteContents();
Inne wymienione metody wydają się być porównywalne, ale o wiele wolniejsze niż innerHTML, z wyjątkiem wartości odstającej, jquery (1.1.1 i 3.1.1), która jest znacznie wolniejsza niż cokolwiek innego:
$(node).empty();
Dowody tutaj:
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
(Nowy adres URL do ponownego uruchomienia jsperf, ponieważ edycja starego adresu URL nie działa)
„Pętla na test” Jsperfa często jest rozumiana jako „per-iteracja”, a tylko pierwsza iteracja ma węzły do usunięcia, więc wyniki są bez znaczenia, w momencie publikacji testy w tym wątku były nieprawidłowo skonfigurowane.