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+)
@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.
.empty()
un efecto similar?Si quieres destruir completamente el objetivo, tienes un par de opciones. Primero puede eliminar el objeto del DOM como se describe anteriormente ...
Opción 1 : luego reemplace el objetivo con un objeto jQuery vacío (jQuery 1.4+)
Opción 2 : o elimine la propiedad por completo (causará un error si la hace referencia en otro lugar)
Más información : información sobre el objeto jQuery vacío e información sobre eliminar
fuente
delete $target
no va a funcionar: perfectionkills.com/understanding-delete/#misconceptions ¿Por qué no lo hará$target=null
el trabajo?$target=null
lugar. Es más rápido y no se mete con las optimizaciones internas del navegador.Estás buscando la
.remove()
función.http://docs.jquery.com/Manipulation/remove
fuente