¿Cómo destruir un elemento DOM con jQuery?

141

Supongamos que el objeto jQuery es $target.

Dios mio
fuente

Respuestas:

194

¿Es $target.remove();lo que estás buscando?

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

Jourkey
fuente
75
Por supuesto, esto solo lo elimina del documento visible. Si hay otras referencias al nodo desde JavaScript, como la propia variable $ target, el objeto escapará al recolector de basura por ahora. Si quieres DESTRUIRLO, también debes perder todas las referencias a él. Sin embargo, no estoy muy seguro de por qué querrías DESTRUIR un elemento DOM. Tal vez solo odias $ target. Pobre $ target, ¿qué te hizo alguna vez?
bobince
52
$ target es amable cuando está solo, pero se pone desagradable cuando está cerca de sus 100.000 amigos clonados.
Sebastián Grignoli
2
Tendrá .empty()un efecto similar?
Saurabh Nanda
3
@SaurabhNanda: Empty eliminará el contenido del objeto, pero no eliminará (ni destruirá) el objeto en sí.
Lucas
46

Si quieres destruir completamente el objetivo, tienes un par de opciones. Primero puede eliminar el objeto del DOM como se describe anteriormente ...

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

Opción 1 : luego reemplace el objetivo con un objeto jQuery vacío (jQuery 1.4+)

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

Opción 2 : o elimine la propiedad por completo (causará un error si la hace referencia en otro lugar)

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

Más información : información sobre el objeto jQuery vacío e información sobre eliminar

Luke
fuente
3
¿Por qué delete $targetno va a funcionar: perfectionkills.com/understanding-delete/#misconceptions ¿Por qué no lo hará $target=nullel trabajo?
LeeGee
@LeeGee: ¿puede resumir su publicación para explicar por qué eliminar no funcionará con los objetos jQuery? ¿Por qué parece funcionar cuando miramos console.log ($ target) al final? Gracias.
Lucas
No puedo explicarlo mejor que el artículo citado, que encontré muy detallado.
LeeGee
Para el registro, esto funciona en la consola porque la consola evalúa JS en el ámbito de evaluación, que permite la eliminación. Las variables en ámbitos "naturales" no serán borrables. Usar en su $target=nulllugar. Es más rápido y no se mete con las optimizaciones internas del navegador.
Bendman
1
Eliminar está bien. Simplemente significa que el motor JS no optimizará ese bloque. En la mayoría de los casos, eso es completamente irrelevante. Cuando se convierte en un problema, entonces buscas formas de usar eliminar. No antes.
Charlie Martin