La respuesta aceptada utiliza un plugin obsoleta a partir de 2011 y la más alta respuesta upvoted utiliza eventos de mutación que son ahora deprecated.
Hoy, un MutationObserver es lo que debe usar para detectar cuando un elemento se ha agregado al DOM. MutationObservers ahora son ampliamente compatibles en todos los navegadores modernos (Chrome 26+, Firefox 14+, IE11, Edge, Opera 15+, etc.).
Aquí hay un ejemplo simple de cómo puede usar un MutationObserver
para escuchar cuando un elemento se agrega al DOM.
Para abreviar, estoy usando la sintaxis de jQuery para construir el nodo e insertarlo en el DOM.
var myElement = $("<div>hello world</div>")[0];
var observer = new MutationObserver(function(mutations) {
if (document.contains(myElement)) {
console.log("It's in the DOM!");
observer.disconnect();
}
});
observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
$("body").append(myElement); // console.log: It's in the DOM!
El controlador de eventos observer
se disparará cada vez que se añade o se elimina de la document
cualquier nodo. Dentro del controlador, realizamos una comprobación contains
para determinar si myElement
se encuentra ahora en el document
.
No necesita iterar sobre cada registro de mutación almacenado en mutations
porque puede realizar la comprobación document.contains
directamente al myElement
.
Para mejorar el rendimiento, reemplace document
con el elemento específico que contendrá myElement
en el DOM.
Gracias, funcionó para mí. –
livequery no existe – w35l3y
@ w35l3y Creo que este es el enlace ahora: http://plugins.jquery.com/livequery/ – Marnix