2009-09-06 12 views
9

Ho alcuni elementi con eventi vincolati. Prima di rimuovere questi elementi, devo prima separarli? Se non lo faranno, causeranno problemi?jquery unbinding è necessario? (sostituzione elementi)

Grazie.

Modifica: ho capito che ho formulato la domanda in modo errato, quindi ora sto apportando una modifica, mi scusi per questo, ma penso che abbia più senso farlo se non fare una nuova domanda.

Dovrei usare unbind o rimuovere su un elemento se lo sostituisco, giusto? Con il metodo js replacewith o html in jquery.

risposta

17

No, non è necessario farlo (l'eliminazione degli eventi viene eseguita automaticamente al momento della rimozione).

+7

Cosa succede se un div viene cancellato con jQuery ('div'). Html (''); e qualcosa all'interno di quel div aveva un evento click o binded. Si è automaticamente disconnesso. – kr1zmo

+0

@ kr1zmo questo è quello che stavo cercando ... – rtpHarry

+3

'.html (htmlString)' [anche non vincolerà i suoi eventi] (http://api.jquery.com/html/#html2) "Inoltre, jQuery rimuove altri costrutti come dati e gestori di eventi da elementi figlio prima di sostituire tali elementi con il nuovo contenuto. " – rtpHarry

1

No, non causerà alcun tipo di problema (a meno che qualcuno non abbia un'esperienza spiacevole che vorrebbero condividere :) I miei soldi sono su "non importa!".

L'unica eccezione a cui riesco a pensare è se si sta eseguendo un binding di eventi dal vivo, in una situazione in cui non si desidera che gli elementi appena inseriti ottengano gli stessi gestori di eventi degli elementi precedentemente rimossi dal DOM. Quindi sarebbe una buona idea non associare eventuali gestori di eventi (live) prima della rimozione dal DOM, che diceva, puoi farlo in qualsiasi momento, e non necessariamente prima della rimozione.

7

L'unica volta in cui è necessario separare esplicitamente lo sarebbe se non si desidera più un gestore di eventi per un evento nella pagina.

La rimozione di un elemento dal DOM causa anche la rimozione di eventi e dati per quell'elemento. Ecco il codice sorgente pertinente