¿Cuál es la diferencia entre los métodos empty()
y remove()
en jQuery
, y cuando llamamos a alguno de estos métodos, los objetos que se crean se destruirán y se liberará la memoria?jQuery empty() vs remove()
Respuesta
empty()
eliminará todos los contenidos de la selección.remove()
eliminará la selección y su contenido.
considerar:
<div>
<p><strong>foo</strong></p>
</div>
$('p').empty(); // --> "<div><p></p></div>"
// whereas,
$('p').remove(); // --> "<div></div>"
Ambos eliminar los objetos DOM y debe liberar la memoria que ocupan, sí.
La documentación lo explica muy bien. También contiene ejemplos:
antes:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.Remove():
$('.hello').remove();
después:
<div class="container">
<div class="goodbye">Goodbye</div>
</div>
antes:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.empty():
$('.hello').empty();
después:
<div class="container">
<div class="hello"></div>
<div class="goodbye">Goodbye</div>
</div>
En lo que se refiere a la memoria, una vez que un ele Cuando se elimina el DOM del DOM y ya no hay más referencias, el recolector de basura recuperará la memoria cuando se ejecute.
Respuesta excelente ... thnx :) – Bhupi
vacío no tocará los atributos del selector. Si desea eliminar los atributos del elemento selector, noté que jQuery removeAttr y removeClass tienen errores en Firefox. Entonces, la opción que tenía era usar el método de eliminar y agregar el elemento contenedor de nuevo, luego anexar nodos secundarios al mismo. – randominstanceOfLivingThing
de manera similar, ¿puede explicar detach() también con los respectivos de los dos anteriores ... – Krish
$("body").empty()
- es elimina los elementos DOM HTML dentro del cuerpo de la etiqueta -
cuando se declara $("body").remove()
- se retire todo el DOM HTML junto con el cuerpo de la etiqueta.
¿Qué proporciona esta respuesta que falta en las respuestas existentes que han estado aquí por tres años? – jcsanyi
- 1. jquery add remove class
- 2. jquery draggable droppable remove dropped
- 3. jQuery remove() devolución de llamada?
- 4. SQL Server 2008 Empty String vs. Space
- 5. Jquery empty() div salvo elementos coincidentes
- 6. Jquery addClass y Remove Class on hover
- 7. HtmlPage.Document.Cookies empty
- 8. Threadlocal remove?
- 9. jquery remove parent no funciona en divs dinámicamente creados
- 10. Posibles problemas de memoria jQuery con $ ('# foo'). Remove()?
- 11. jquery remove() salta a la parte superior de la página
- 12. Las diferencias entre detach(), ocultar() y remove() - jQuery
- 13. JQuery: Comprobar si existe el elemento junto a '.Remove()'
- 14. jQuery $ (this) .remove() no funciona después de anexar
- 15. PHP remove empty, null Clave/valores de la matriz manteniendo las claves/valores de lo contrario no vacíos/nulos
- 16. SQLite select where empty?
- 17. Empty responseText from XMLHttpRequest
- 18. WPF listbox empty datatemplate
- 19. PHP empty var == 0?
- 20. os.path.dirname (__ file__) returns empty
- 21. remove "\ n" de NSString
- 22. Zend_Tool remove controller/action
- 23. YUI remove javascript comments
- 24. remove pytz timezone
- 25. remove css hover style
- 26. LiveValidation .remove no funciona
- 27. List Iterator Remove()
- 28. Will jquery empty() método clear the event listeners creado a través de non jquery means
- 29. jQuery Mobile vs jQuery regulares
- 30. Twig Empty Variable -> Exception?
¿Qué sucede con los controladores de eventos? Tengo un caso raro donde empty + append dos veces, con diferentes adjuntos hace que el segundo conjunto de elementos anexados ejecute los controladores del primer conjunto. – Killroy
@way demasiado tarde, pero también eliminan el controlador. existe la posibilidad de que haya registrado a esos controladores con una función como 'live' o' delegate'. – undone