2009-09-29 8 views
12

Cuando agrego algo de la clase "myClass" quiero llamar a una función en este elemento.¿Cómo hacer una acción cuando se agrega un elemento a una página usando Jquery?

que sería algo en la línea de:

jQuery(".error_message").live("load",function(){ 
    alert("test"+this); 
}); 

... excepto que esta no existe.

¿Cuál es la mejor manera de hacerlo?

+0

¿Cómo se agregan los elementos al DOM? – Colin

+0

Cargué un html nuevo a través de ajax y lo lanzo en el DOM – marcgg

+0

. Hay diferentes maneras en que puedo agregar estos elementos, es por eso que me gustaría evitar tener una devolución de llamada sobre estas funciones. – marcgg

Respuesta

16

La respuesta breve y directa a su pregunta sería "no se puede hacer". Pero de su comentario hace unos minutos, veo que desea agregar elementos de diferentes maneras y tener un método unificado para manejar estos elementos recién agregados. ¿Puedo sugerir otro enfoque? Trigger custom events.

La forma en que funcionaría es así: en todas partes se carga el elemento de mensajes de error, se agrega una línea cuando se hace:

$('.error_message').trigger('load'); 

Ahora su .live ('carga' ...) lo trabajará.

+0

Esa es una respuesta muy interesante. No estoy seguro si eso es lo que estoy buscando ... se ve un poco raro. Pero no sé lo suficiente como para decir que hacky es increíble. Entonces, ¿dirías que es una buena práctica? – marcgg

+1

voy a dar fe de ello - también hay un buen artículo sobre la puesta en común de eventos que habla de esto a nivel de documento: http://www.michaelhamrah.com/blog/index.php/2008/12/event-pooling-with -jquery-using-bind-and-trigger-manage-complex-javascript/ –

+0

alguna idea de cómo .live() hace lo que hace? – Kip

Cuestiones relacionadas