¿Cuál es la diferencia entre jQuery's replaceWith () y html ()?


145

¿Cuál es la diferencia entre las funciones replaceWith () y html () de jQuery cuando se pasa HTML como parámetro?


2
esto me ayudó! Estaba tratando de cambiar el texto de una etiqueta dinámicamente usando jquery y este hilo definitivamente me ayudó. ¡Gracias!
HereToLearn_

Respuestas:


289

Toma este código HTML:

<div id="mydiv">Hello World</div>

Haciendo:

$('#mydiv').html('Aloha World');

Resultará en:

<div id="mydiv">Aloha World</div>

Haciendo:

$('#mydiv').replaceWith('Aloha World');

Resultará en:

Aloha World

Entonces html () reemplaza el contenido del elemento, mientras replaceWith () reemplaza el elemento real.


1
Buena explicación!
Luis Gouveia

31

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


3
+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.

<div id="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.

<div id="test_id">
  <p><h1>H1 content</h1></p>
</div>

Pero el $('#test_id p').replaceWith('<h1>H1 content</h1>');le dará el siguiente puesto.

<div id="test_id">
      <h1>H1 content</h1>
</div>

2

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!)


66
Es por eso que ya no debes usar el centro. : p
Romain Tribes

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.