É claro que isso apenas o remove do documento visível. Se houver outras referências ao nó do JavaScript, como a própria variável $ target, o objeto escapará do coletor de lixo por enquanto. Se você quiser destruí-lo, também precisará perder todas as referências a ele. Não sei ao certo por que você desejaria DESTRUIR um elemento DOM. Talvez você apenas odeie $ target. Alvo pobre de $, o que isso fez com você?
9990
52
$ target é gentil quando ele está sozinho, mas ele fica desagradável quando está perto de seus 100.000 amigos clonados.
Sebastián Grignoli
2
Terá .empty()um efeito semelhante?
Saurabh Nanda
3
@SaurabhNanda - Empty removerá o conteúdo do objeto, mas não removerá (nem destruirá) o próprio objeto.
Lucas
46
Se você quer destruir completamente o alvo, você tem algumas opções. Primeiro você pode remover o objeto do DOM como descrito acima ...
console.log($target);// jQuery object
$target.remove();// remove target from the DOM
console.log($target);// $target still exists
Opção 1 - Em seguida, substitua o destino por um objeto jQuery vazio (jQuery 1.4+)
@LeeGee - Você pode resumir sua postagem para explicar por que a exclusão não funciona para objetos jQuery? Por que parece funcionar quando olhamos para console.log ($ target) no final? Obrigado.
Lucas
Não posso explicar melhor do que o artigo citado, que achei muito detalhado.
LeeGee
Para o registro, isso funciona no console porque o console avalia JS no escopo de avaliação, o que permite excluir. Variáveis em escopos "naturais" não serão excluídas. Use em $target=nullvez disso. É mais rápido e não interfere nas otimizações internas do navegador.
22414 bendman
1
Excluir está bom. Significa apenas que o bloco não será otimizado pelo mecanismo JS. Na maioria dos casos, isso é totalmente irrelevante. Quando se torna um problema, você procura maneiras de usar o delete. Não antes.
.empty()
um efeito semelhante?Se você quer destruir completamente o alvo, você tem algumas opções. Primeiro você pode remover o objeto do DOM como descrito acima ...
Opção 1 - Em seguida, substitua o destino por um objeto jQuery vazio (jQuery 1.4+)
Opção 2 - ou exclua completamente a propriedade (causará um erro se você a referenciar em outro lugar)
Mais informações : informações sobre o objeto jQuery vazio e informações sobre exclusão
fonte
delete $target
que não vai funcionar: perfectionkills.com/understanding-delete/#misconceptions Por que não vai$target=null
funcionar?$target=null
vez disso. É mais rápido e não interfere nas otimizações internas do navegador.Você está procurando a
.remove()
função.http://docs.jquery.com/Manipulation/remove
fonte