Buenas amigos, en una paginita que estoy trabajando me di cuenta de un pequeño problema en jquery, y es que cuantas veces no asociamos eventos a un tipo de objeto para que ejecute un codigo javascript mediante jQuery, todo bien, pero si la respuesta de ese codigo es generar nuevos objetos del mismo tipo, y aplicas el mismo evento no sucede nada..........
Tienes el problema que cualquier contenido que cargue despues de cargada la pagina (mediante ajax usando php o generando nuevos objetos mediante javascript), jQuery no lo encuentra.......
ejemplo:
$("p").click(function(){
$(this).after("<p>Another paragraph!</p>");
});
con este codigo, al hacer click en un parrafo, nos va a crear otro parrafo nuevo, pero si le damos click al nuevo parrafo, en efecto es el mismo tipo de objeto <p>, pero al ser creado despues de enlazar el evento click al objeto <p>, jQuery no lo encuentra, como si quedara flotando y no estuviera en codigo.
Por eso jQuery a partir de su version 1.3 introduce el concepto del evento: LIVE
asi, el evento live, se usa para asociar cualquier evento a un tipo de objeto de alli para adelante, no importando en que momento se hizo la asociacion.
el nuevo codigo seria:
$("p").live("click", function(){
$(this).after("<p>Another paragraph!</p>");
});
Aun despues de cargada la pagina y hecho las asociaciones de eventos, cualquier codigo dinamico generado estará bajo esas mismas asociaciones.
Asi con live, nos cubrimos la espalda para que cada nuevo contenido dinamico cargado en nuestra pagina se siga aplicando codigo cuando ejecutamos un evento como click, hover, mouseover, etc, etc, etc
Espero hayan entendido, que al leerlo por segunda vez no mucho le hayo jejejejeje