replaceWith () reemplazará el elemento actual, mientras que html () simplemente reemplaza el contenido.
Tenga en cuenta que el replaceWith () en realidad no eliminará el elemento, sino que simplemente lo eliminará del DOM y se lo devolverá en la colección.
+1 es muy útil para tenerlo escrito que replaceWith () en realidad no elimina el elemento. ¡No había descubierto esto!
Peter
2
Es cierto, todavía existe. No está en el DOM, por lo que no lo verá, pero sigue siendo una pieza válida de HTML. Prueba: jsbin.com/ofirip/2
cgp
1
sí, es cierto. Gracias por poner el ejemplo. Estaba pensando en eliminarlo del DOM (más la recolección de basura) como esencialmente una eliminación de mi punto de vista. Pero eres técnicamente correcto. Eliminaré el -1y espero que esto sea útil para todos. :)
Peter
1
Gracias por la nota, replaceWith () devolviendo el elemento anterior solo me dio un poco de frustración de depuración :(
desde el
2
Sí, he estado luchando contra esto durante al menos media hora, me di cuenta de que la función devuelve el elemento reemplazado, esperaba que devolviera el nuevo con un código como este: var $form = $target.closest('tr').replaceWith(html) Resulta que $formcontiene el elemento antes del reemplazo. suspiro
Pawel Krakowiak
5
Hay dos formas de usar las funciones html () y replaceWith () Jquery.
<divid="test_id"><p>My Content</p></div>
1.) html () vs replaceWith ()
var html = $('#test_id p').html(); devolverá el "Mi contenido"
Pero el
var replaceWith = $('#test_id p').replaceWith();devolverá todo el objeto DOM de
<p>My Content</p>.
2.) html ('valor') vs replaceWith ('valor')
$('#test_id p').html('<h1>H1 content</h1>'); le dará la siguiente salida.
<divid="test_id"><p><h1>H1 content</h1></p></div>
Pero el
$('#test_id p').replaceWith('<h1>H1 content</h1>');le dará el siguiente puesto.
También puede ser útil saber que .empty().append()también se puede usar en lugar de.html() . En el punto de referencia que se muestra a continuación, esto es más rápido, pero solo si necesita llamar a esta función muchas veces.
Respuestas:
Toma este código HTML:
Haciendo:
Resultará en:
Haciendo:
Resultará en:
Entonces html () reemplaza el contenido del elemento, mientras replaceWith () reemplaza el elemento real.
fuente
replaceWith () reemplazará el elemento actual, mientras que html () simplemente reemplaza el contenido.
Tenga en cuenta que el replaceWith () en realidad no eliminará el elemento, sino que simplemente lo eliminará del DOM y se lo devolverá en la colección.
Un ejemplo para Peter: http://jsbin.com/ofirip/2
fuente
-1
y espero que esto sea útil para todos. :)var $form = $target.closest('tr').replaceWith(html)
Resulta que$form
contiene el elemento antes del reemplazo. suspiroHay dos formas de usar las funciones html () y replaceWith () Jquery.
1.) html () vs replaceWith ()
var html = $('#test_id p').html();
devolverá el "Mi contenido"Pero el
var replaceWith = $('#test_id p').replaceWith();
devolverá todo el objeto DOM de<p>My Content</p>
.2.) html ('valor') vs replaceWith ('valor')
$('#test_id p').html('<h1>H1 content</h1>');
le dará la siguiente salida.Pero el
$('#test_id p').replaceWith('<h1>H1 content</h1>');
le dará el siguiente puesto.fuente
Antigua pregunta pero esto puede ayudar a alguien.
Existen algunas diferencias en cómo funcionan estas funciones en Internet Explorer y Chrome / Firefox SI su HTML no es válido.
Limpia tu HTML y funcionarán según lo documentado.
(¡No cerrar mi
</center>
costo me costó la noche!)fuente
También puede ser útil saber que
.empty().append()
también se puede usar en lugar de.html()
. En el punto de referencia que se muestra a continuación, esto es más rápido, pero solo si necesita llamar a esta función muchas veces.Ver: https://jsperf.com/jquery-html-vs-empty-append-test
fuente