2012-03-12 20 views
16

Necesito crear un detector de eventos de tal manera que, cuando se añade un nuevo elemento al documento, o cualquiera de sus hijos, mi controlador de eventos se llama.Escucha de eventos tales como la adición de nuevos elementos en JavaScript

Alguna idea de cómo hacer esto utilizando?

+1

posible duplicado de [Detectar cambios en el DOM] (http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom) –

+0

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

Respuesta

23
.bind('DOMNodeInserted DOMNodeRemoved') 

estos son los eventos para verificar que el elemento se inserte o elimine.

se unen en el elemento principal de este evento.

y llame a su función en manejador

js demostración violín: http://jsfiddle.net/PgAJT/

clic aquí por ejemplo ... http://help.dottoro.com/ljmcxjla.php

+1

la demostración es perfecta – zeacuss

+0

Esto funciona muy bien, excepto en IE ... –

+6

ahora está en desuso ... ver https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events – yomexzo

4

DOMNodeInserted está en desuso en DOM Nivel 3 recomendación. su uso ralentiza los navegadores (dicen). dependiendo de lo que lo necesite para, podría tener sentido para desencadenar un evento personalizado en el código donde se inserta el elemento.

+4

en realidad, no soy el que agrega los nodos, por lo que no puedo manejarlo donde se agrega. – zeacuss

18

eventos de mutación están en desuso, utilizar Mutation Observer lugar. También puede utilizar arrive.js biblioteca, que utiliza internamente Mutación Observador y proporciona una API simple agradable de escuchar para la creación de elementos y remoción.

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

Muy buena biblioteca! Resolvió mi problema actual y definitivamente lo usará en futuros proyectos. Gracias, Uzair! – mkp

Cuestiones relacionadas