La risposta attualmente accettata è errata innerHTML
sull'essere più lento (almeno in IE e Chrome), come correttamente menzionato m93a.
Chrome e FF sono notevolmente più veloci usando questo metodo (che distruggerà i dati jquery allegati):
var cNode = node.cloneNode(false);
node.parentNode.replaceChild(cNode, node);
in un secondo distante per FF e Chrome, e il più veloce in IE:
node.innerHTML = '';
InnerHTML non distruggerà i gestori di eventi né spezzerà i riferimenti jquery , ma è anche consigliato come soluzione qui:
https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML .
Il metodo di manipolazione DOM più veloce (ancora più lento dei due precedenti) è la rimozione degli intervalli, ma gli intervalli non sono supportati fino a IE9.
var range = document.createRange();
range.selectNodeContents(node);
range.deleteContents();
Gli altri metodi citati sembrano essere comparabili, ma molto più lenti di innerHTML, ad eccezione del valore anomalo, jquery (1.1.1 e 3.1.1), che è considerevolmente più lento di ogni altra cosa:
$(node).empty();
Prova qui:
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
(Nuovo URL per il riavvio di jsperf perché la modifica del vecchio URL non funziona)
Il "per-test-loop" di Jsperf viene spesso inteso come "per-iterazione" e solo la prima iterazione ha nodi da rimuovere, quindi i risultati sono privi di significato, al momento della pubblicazione c'erano test in questa discussione impostati in modo errato.