Come distruggere un elemento DOM con jQuery?


Risposte:


194

È $target.remove();quello che stai cercando?

https://api.jquery.com/remove/


75
Naturalmente questo lo rimuove solo dal documento visibile. Se ci sono altri riferimenti al nodo da JavaScript, come la variabile $ target stessa, per ora l'oggetto sfuggirà al Garbage Collector. Se vuoi DISTRUGGIlo devi anche perdere tutti i riferimenti ad esso. Non sono del tutto sicuro del motivo per cui vorresti DISTRUGGERE un elemento DOM. Forse odi $ target. Povero $ target, cosa ti ha mai fatto?
Bobince,

52
$ target è gentile quando è solo, ma diventa cattivo quando è vicino ai suoi 100.000 amici clonati.
Sebastián Grignoli,

2
Avrà .empty()un effetto simile?
Saurabh Nanda,

3
@SaurabhNanda - Empty rimuoverà il contenuto dell'oggetto, ma non rimuoverà (o distruggerà) l'oggetto stesso.
Luca,

46

Se vuoi distruggere completamente il bersaglio, hai un paio di opzioni. Per prima cosa puoi rimuovere l'oggetto dal DOM come descritto sopra ...

console.log($target);   // jQuery object
$target.remove();       // remove target from the DOM
console.log($target);   // $target still exists

Opzione 1 - Quindi sostituire la destinazione con un oggetto jQuery vuoto (jQuery 1.4+)

$target = $();
console.log($target);   // empty jQuery object

Opzione 2 - Oppure elimina completamente la proprietà (causerà un errore se la fai riferimento altrove)

delete $target;
console.log($target);   // error: $target is not defined

Altre letture: informazioni sull'oggetto jQuery vuoto e informazioni sull'eliminazione


3
Perché delete $targetnon funziona: perfectionkills.com/understanding-delete/#misconceptions Perché non $target=nullfunziona?
LeeGee,

@LeeGee - Puoi riassumere il tuo post per spiegare perché l'eliminazione non funzionerà per gli oggetti jQuery? Perché sembra funzionare quando guardiamo console.log ($ target) alla fine? Grazie.
Luca,

Non posso spiegarlo meglio dell'articolo citato, che ho trovato molto dettagliato.
LeeGee,

Per la cronaca, questo funziona in console perché la console valuta JS nell'ambito di eval, che consente l'eliminazione. Le variabili in ambiti "naturali" non saranno cancellabili. Usa $target=nullinvece. È più veloce e non scherza con le ottimizzazioni interne del browser.
Bendman,

1
Elimina va bene. Significa solo che il blocco non sarà ottimizzato dal motore JS. Nella maggior parte dei casi, ciò è del tutto irrilevante. Quando diventa un problema, allora cerchi modi per utilizzare Elimina. Non prima.
Charlie Martin,

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.