La réponse actuellement acceptée est erronée d' innerHTML
être plus lent (au moins dans IE et Chrome), comme m93a l'a correctement mentionné.
Chrome et FF sont considérablement plus rapides à l'aide de cette méthode (qui détruira les données jquery jointes):
var cNode = node.cloneNode(false);
node.parentNode.replaceChild(cNode, node);
dans une seconde éloignée pour FF et Chrome, et le plus rapide dans IE:
node.innerHTML = '';
InnerHTML ne détruira pas vos gestionnaires d'événements ou ne cassera pas les références jquery , il est également recommandé comme solution ici:
https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML .
La méthode de manipulation DOM la plus rapide (toujours plus lente que les deux précédentes) est la suppression de la plage, mais les plages ne sont pas prises en charge avant IE9.
var range = document.createRange();
range.selectNodeContents(node);
range.deleteContents();
Les autres méthodes mentionnées semblent comparables, mais beaucoup plus lentes que innerHTML, à l'exception de la valeur aberrante, jquery (1.1.1 et 3.1.1), qui est considérablement plus lente que toute autre chose:
$(node).empty();
Preuve ici:
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
(Nouvelle URL pour le redémarrage de jsperf car la modification de l'ancienne URL ne fonctionne pas)
La «boucle par test» de Jsperf est souvent comprise comme «par itération», et seule la première itération a des nœuds à supprimer, donc les résultats n'ont aucun sens, au moment de la publication, il y avait des tests dans ce thread mal configurés.