2012-03-12 10 views
16

Ho bisogno di creare un listener di eventi tale che, quando un nuovo elemento viene aggiunto al documento, o uno dei suoi figli, il mio gestore di eventi venga chiamato.Ascolto di eventi come l'aggiunta di nuovi elementi in JavaScript

Qualche idea su come utilizzare questo?

+1

possibile duplicato del [Rileva modifiche nel DOM] (http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom) –

+0

@zeacuss: andate qui http: // www .w3.org/TR/DOM-Level-2-Events/events.html # Events-EventListener – krish

risposta

23
.bind('DOMNodeInserted DOMNodeRemoved') 

questi sono gli eventi per controllare che l'elemento sia inserito o rimosso.

bind sull'elemento padre questo evento.

e chiamare la funzione nel gestore

js violino demo: http://jsfiddle.net/PgAJT/

clicca qui ad esempio ... http://help.dottoro.com/ljmcxjla.php

+1

la demo è perfetta – zeacuss

+0

Funziona alla grande, eccetto in IE ... –

+6

ora è deprecato .. vedi https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events – yomexzo

4

DOMNodeInserted è deprecato in DOM Level 3 raccomandazione. usarli rallenta i browser (dicono). a seconda di cosa ti serve, potrebbe aver senso attivare un evento personalizzato all'interno del codice in cui inserisci l'elemento.

+4

in realtà, io non sono quello che aggiunge i nodi, quindi non posso gestirlo dove viene aggiunto. – zeacuss

18

Gli eventi di mutazione sono deprecati, utilizzare invece Mutation Observer. Puoi anche usare la libreria arrive.js, utilizza internamente Mutation Observer e fornisce una bella e semplice API per ascoltare la creazione e la rimozione di elementi.

$('#container').arrive('.mySelector', function(){ 
    var $newElem = $(this); 
}); 
+2

Libreria molto bella! Risolto il mio problema attuale e lo userò sicuramente su progetti futuri. Grazie, Uzair! – mkp

Problemi correlati