Qual'è la differenza tra jQuery's replaceWith () e html ()?


145

Qual è la differenza tra le funzioni replaceWith () e html () di jQuery quando HTML viene passato come parametro?


2
questo mi ha aiutato! Stavo cercando di cambiare dinamicamente il testo di un'etichetta usando jquery e questo thread mi ha sicuramente aiutato. Grazie!
— HereToLearn_

Risposte:


289

Prendi questo codice HTML:

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

fare:

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

Si tradurrà in:

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

fare:

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

Si tradurrà in:

Aloha World

Quindi html () sostituisce il contenuto dell'elemento, mentre replaceWith () sostituisce l'elemento effettivo.


1
Bella spiegazione!
— Luis Gouveia,

31

replaceWith () sostituirà l'elemento corrente, mentre html () sostituisce semplicemente il contenuto.

Si noti che replaceWith () non eliminerà effettivamente l'elemento ma lo rimuoverà semplicemente dal DOM e lo restituirà all'utente nella raccolta.

Un esempio per Peter: http://jsbin.com/ofirip/2


3
+1 molto utile per averlo annotato che replaceWith () non elimina effettivamente l'elemento. Non l'avevo capito!
— Peter,

2
È vero, esiste ancora. Non è nel DOM, quindi non lo vedrai, ma è ancora un pezzo di HTML valido. Prova: jsbin.com/ofirip/2
— cgp

1
si è vero. grazie per aver dato l'esempio. Stavo pensando di rimuoverlo dal DOM (oltre alla garbage collection) come essenzialmente cancellazione dal mio punto di vista. Ma sei tecnicamente corretto. Rimuoverò -1e spero che questo sarà utile per tutti. :)
— Peter,

1
Grazie per la nota, replaceWith () che restituisce il vecchio elemento mi ha dato solo un po 'di frustrazione nel debug :(
— dain

2
Sì, lo sto combattendo da almeno mezz'ora, mi sono appena reso conto che la funzione restituisce l'elemento sostituito, mi aspettavo che restituisse quello nuovo con codice come questo: var $form = $target.closest('tr').replaceWith(html) risulta che $formcontiene l'elemento prima della sostituzione. sospiro
— Pawel Krakowiak,

5

Esistono due modi per utilizzare le funzioni jquery html () e replaceWith ().

<div id="test_id">
   <p>My Content</p>
</div>

1.) html () vs replaceWith ()

var html = $('#test_id p').html(); restituirà il "Mio contenuto"

Ma var replaceWith = $('#test_id p').replaceWith();restituirà l'intero oggetto DOM di <p>My Content</p>.


2.) html ('valore') vs replaceWith ('valore')

$('#test_id p').html('<h1>H1 content</h1>'); ti darà il seguente risultato.

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

Ma $('#test_id p').replaceWith('<h1>H1 content</h1>');ti darà il seguente risultato messo.

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

2

Vecchia domanda ma questo può aiutare qualcuno.

Ci sono alcune differenze nel modo in cui queste funzioni operano in Internet Explorer e Chrome / Firefox SE il tuo HTML non è valido.

Pulisci il tuo HTML e funzioneranno come documentato.

(Non chiudermi mi è </center>costato la serata!)


6
Ecco perché non dovresti più usare center. : p
— Romain Tribes

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.