Autor Tema: [TUTORIAL] jQuery - Asociar eventos a objetos aun no existentes  (Leído 7373 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
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:
Citar
$("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:

Citar
$("p").live("click", function(){
$(this).after("&#60;p&#62;Another paragraph!&#60;/p&#62;");
});

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

Desconectado Jaru

  • The Communiter-
  • *
  • Mensajes: 13252
  • some text
Re:[TUTORIAL] jQuery - Asociar eventos a objetos aun no existentes
« Respuesta #1 : junio 17, 2010, 06:45:11 pm »
no me habia topado con esto pero ahora ya se.
debe ser super util cuando usas ajax.
un tutorial para no quebrar el back button con ajax estaria super :D
N/A

Desconectado chester08

  • Sv Member
  • ***
  • Mensajes: 400
  • ahora tengo otro motivo para no dormir... thnks
    • My Web site
Re:[TUTORIAL] jQuery - Asociar eventos a objetos aun no existentes
« Respuesta #2 : julio 13, 2010, 04:54:48 pm »
Ahora Jquery ya va por la version v1.4.2   :shockd:
Bueno. esa no me la sabia (jeje de muchas que no me se)
se ve que es muy util , mas cuando de crear elementos dinamicamente se trata.
Gracias por el dato eh!!!
------------------- Ch3st3r08-----------------------

Desconectado jcbaena

  • The newbie
  • *
  • Mensajes: 1
Re: [TUTORIAL] jQuery - Asociar eventos a objetos aun no existentes
« Respuesta #3 : julio 26, 2011, 11:29:30 am »
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:
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:

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

Me parece fantástico...era lo que llevaba días buscando...pero no me funciona.

Tengo la version 1.5 y pongo lo siguiente:
$(".claseinexistenteparaclickjquery").live('click' ,function() {
todo el codigo js que funciona con el enunciado sin el live;
});

¿qué se me escapa? He probado la palabra live con ' y con "


CORRIJO: FALTABA UN } .

GRACIAS GRACIAS GRACIAS.

P.D: Tu ejemplo estaba perfectamente explicado.
« Última Modificación: julio 26, 2011, 11:34:25 am por jcbaena »

Desconectado Non Servium

  • Sv Member
  • ***
  • Mensajes: 426
  • Ilix Punx :)
Re: [TUTORIAL] jQuery - Asociar eventos a objetos aun no existentes
« Respuesta #4 : julio 26, 2011, 11:38:53 am »
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:
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:

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
Interesante...
gracias por el dato...  :thumbsup: :thumbsup: :thumbsup:
♫ Condenados a perder la libertad! Por no acatar las leyes que les asignaron. ♪ ♫
Decididos, decididos a emprender! Un camino largo y duro por no ser esclavos ♫


Watch