2012-02-13 12 views
11

Me gustaría activar un evento cuando se crea un elemento.jQuery evento cuando se crea el elemento

$(document).on('load','#TB_title',function() { 
    console.log('loaded'); 
}); 

¿Hay un equivalente de esto que funcione?

Vi que algunas personas sugieren livequery, pero parece pesado.

Gracias.

+0

Nota: #TB_title no es un iframe. – rpophessagr

+0

Amplíe "cuando se crea un elemento". ¿Quieres decir cuando un elemento se agrega al DOM? –

+0

Sí, estoy intentando activar una función una vez que se carga una caja gruesa. – rpophessagr

Respuesta

2

Puede desencadenar un evento personalizado mundial:

$(document).on('load','#TB_title',function() { 
    $.event.trigger('nameOfCustomEvent'); 
}); 

$('#element').bind('nameOfCustomEvent', function(){ 
    console.log(this); 
}); 
+0

El disparador nunca se disparará, ese es el problema por el que OP pregunta. –

5

No creo que exista tal cosa directamente, pero se puede controlar el evento DOMSubtreeModified y esperar hasta que pueda encontrar el elemento con tales ID:

var _elementToFind = "TB_title"; 
var _elementFound = false; 
var _counter = 1; 
$(document).bind("DOMSubtreeModified", function(evt) { 
    if (_elementFound) 
     return; 
    if ($("#" + _elementToFind).length > 0) { 
     alert("element '" + _elementToFind + "' created"); 
     _elementFound = true; 
    } 
}); 

Live test case.

El inconveniente es que no es compatible con Opera e IE menos de 9 - see here los detalles completos.

Cuestiones relacionadas