2011-03-01 9 views
5

Como dice el título, si tengo un oyente jQuery vinculado a un elemento HTML, y luego elimino el elemento HTML del DOM usando jQuery, ¿qué ocurre?Si un elemento HTML tiene un oyente, ¿qué le sucede al oyente después de que ese elemento se elimine del DOM?

<div id="eventDiv> ... </div> 


$('#eventDiv').click(function() { 
    // event handling code here 
}); 

entonces lo que sucede al oyente cuando lo haga

$('#eventDiv').remove(); 

Además, ¿qué ocurre si no se utiliza jQuery y utiliza document.removeChild()?

Respuesta

3

Si nos fijamos en la jQuery source, remove() llama a una función llamada cleanData que exige jQuery.event.remove o jQuery.removeEvent (esto parece ser una función interna). Estos métodos finalmente llaman al unbind(), que elimina cualquier detector de eventos para el elemento DOM que está eliminando.

+0

Dulce, también lo hace document.removeChild resultado en cualquier limpieza de oyente? – stevebot

+1

@stevebot [MDC] (https://developer.mozilla.org/En/DOM/Node.removeChild) dice que el elemento eliminado permanece en la memoria (se obtiene una referencia al elemento eliminado). Eventualmente, es probable que se recolecte basura (solo especulación), que puede o no eliminar al oyente; tendrías que mirar la fuente :) –

+0

Gracias, eso es bueno tener en cuenta ya que estoy lidiando con una mezcla de YUI, prototipo, JQuery y javascript directo en mi aplicación lol – stevebot

Cuestiones relacionadas