que estaba buscando la mejor respuesta en cuanto al rendimiento mientras trabajaba en un DOM importante.
La respuesta de eyelidlessness señalaba que el uso de javascript sería lo mejor.
Realicé las siguientes pruebas de tiempo de ejecución en 5.000 líneas y 400.000 caracteres con una composición DOM compleja dentro de la sección para eliminar. Estoy usando una ID en lugar de una clase por razones convenientes cuando uso javascript.
Usando $ .unwrap()
$('#remove-just-this').contents().unwrap();
201.237ms
Usando $ .replaceWith()
var cnt = $("#remove-just-this").contents();
$("#remove-just-this").replaceWith(cnt);
156.983ms
Usando DocumentFragment en javascript
var element = document.getElementById('remove-just-this');
var fragment = document.createDocumentFragment();
while(element.firstChild) {
fragment.appendChild(element.firstChild);
}
element.parentNode.replaceChild(fragment, element);
147.211ms
Conclusión
En cuanto al rendimiento, incluso en un tiempo relativamente gran estructura DOM, la diferencia entre usar jQuery y javascript no es enorme. Sorprendentemente $.unwrap()
es más costoso que $.replaceWith()
. Las pruebas se han realizado con jQuery 1.12.4.
solución mucho más limpia que la mía! – ConroyP
Ojalá me di cuenta (err .. ** found **) esto hace 3 horas ... simple y elegante - ¡increíble! – Tathagata
¿Cuál es el significado de 'cnt'? –