La respuesta actualmente aceptada es incorrecta sobre innerHTML
ser más lento (al menos en IE y Chrome), como se mencionó correctamente en m93a.
Chrome y FF son mucho más rápidos con este método (que destruirá los datos jquery adjuntos):
var cNode = node.cloneNode(false);
node.parentNode.replaceChild(cNode, node);
en un distante segundo lugar para FF y Chrome, y más rápido en IE:
node.innerHTML = '';
InnerHTML no destruirá sus controladores de eventos ni romperá las referencias de jquery , también se recomienda como solución aquí:
https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML .
El método de manipulación DOM más rápido (aún más lento que los dos anteriores) es la eliminación de Rango, pero los rangos no son compatibles hasta IE9.
var range = document.createRange();
range.selectNodeContents(node);
range.deleteContents();
Los otros métodos mencionados parecen ser comparables, pero mucho más lentos que innerHTML, excepto el atípico, jquery (1.1.1 y 3.1.1), que es considerablemente más lento que cualquier otra cosa:
$(node).empty();
Evidencia aquí:
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
(Nueva url para el reinicio de jsperf porque la edición de la antigua url no funciona)
El "bucle de prueba" de Jsperf a menudo se entiende como "por iteración", y solo la primera iteración tiene nodos para eliminar, por lo que los resultados no tienen sentido, al momento de la publicación había pruebas en este hilo configuradas incorrectamente.