Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Capturar Link dinámico

Estas en el tema de Capturar Link dinámico en el foro de Frameworks JS en Foros del Web. Hola, soy nuevo en Jquery y estoy pelandome con lo siguiente: Tengo esta función: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original < SCRIPT > var ...
  #1 (permalink)  
Antiguo 15/06/2012, 10:28
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Capturar Link dinámico

Hola,
soy nuevo en Jquery y estoy pelandome con lo siguiente:

Tengo esta función:
Código Javascript:
Ver original
  1. <SCRIPT>
  2. var num = 0;
  3. $(document).ready( function (){
  4. $("#boton").click(function() {
  5.    
  6.     num++;
  7.     var strHTML = $("#test").html();
  8.     $("#test").html(strHTML + "<div id='capa"+num+"'>Capa de texto   <a href='#' id='link'>Link "+num+"</a></div>");
  9. });
  10. });
  11. </script>

Lo único que hago es que al apretar un botón me vaya saliendo:
Capa de texto Link 1
Capa de texto Link 2
Capa de texto Link 3
....

Cuando hago click en Link 1/2 o 3, no puedo capturar el evento.

Sin embargo tengo el siguiente código para capturar el enlace:
Código Javascript:
Ver original
  1. <SCRIPT>
  2. $(document).ready( function (){
  3. $("#link").click(function() {
  4.     alert("ep!");
  5. });
  6. });
  7. </script>

Me he fijado que si el enlace lo creo yo a mano, capturo el enlace perfectamente pero si lo creo dinámico, entonces no hace nada.

En enlace que pongo a mano es idéntico al dinámico.

Código HTML:
Ver original
  1. <a href='#' id='link'>Link</a>

Alguien sabe como puedo capturar el enlace dinamico (link1, 2, 3,...) para que al pulsar haga el alert()?

Gracias a todos y un saludo.
  #2 (permalink)  
Antiguo 18/06/2012, 01:42
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: Capturar Link dinámico

Algún moderador me lo puede mover a "Frameworks JavaScript" por favor?

Gracias.
  #3 (permalink)  
Antiguo 18/06/2012, 08:34
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Capturar Link dinámico

Buenas,

Esta duda la tiene mucha gente, deberíamos incluirla en la wiki de Javascript, o en un apartado de JQuery.

El problema radica en que los eventos se enlazan a los elementos que están definidos en el momento que se ejecuta el script, es decir, a los elementos añadidos dinámicamente después de la ejecución no se les ha enlazado el evento.

Otro error es que el id es único (sólo un elemento puede tener un id). Para lo que tu quieres debes usar class.

Para solucionar esto tienes dos formas:

Asignar el evento tras añadir los elementos:
Código Javascript:
Ver original
  1. $(document).ready( function (){
  2. $("#boton").click(function() {
  3.    
  4.     num++;
  5.     nuevoElemento = $("<div class='capa"+num+"'>Capa de texto   <a href='#' class='link'>Link "+num+"</a></div>");
  6.  
  7.     $(".link",nuevoElemento).click(function() {
  8.     alert("ep!");
  9. });
  10.  
  11.  
  12.     $("#test").append(nuevoElemento);
  13.    
  14. });
  15. });

ó usando delegate:

Código Javascript:
Ver original
  1. $(document).ready( function (){
  2. var num = 0;
  3.  
  4. $("#boton").click(function() {    
  5.     num++;
  6.    
  7.  
  8.     $("#test").append("<div class='capa"+num+"'>Capa de texto   <a href='#' class='link'>Link "+num+"</a></div>");
  9.    
  10.    
  11. });
  12.  
  13. $("#test").delegate(".link","click",function() {
  14.     alert("ep!");
  15. });&#8203;
  16. });

En la nueva versión de JQuery se puede usar el nuevo método on en vez de delegate (mírate la documentación).
  #4 (permalink)  
Antiguo 18/06/2012, 09:00
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Capturar Link dinámico

Cita:
Iniciado por ElAthlit Ver Mensaje
Algún moderador me lo puede mover a "Frameworks JavaScript" por favor?

Gracias.
Hola:

Hay un pequeño triángulo a la izquierda de los mensajes, junto a los datos del autor, para reportar mensajes. Es la mejor forma de advertir a los moderadores (no suelo visitar todos los mensajes, y dudo que los que ayudamos en estos foros tengan capacidad para leerlos).

Mensaje movido.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 19/06/2012, 01:36
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: Capturar Link dinámico

Hola alexg88,
muchas gracias por tan magnífica explicación, de verdad. Me lo has dejado clarísimo!!

Hola caricatos,
lo desconocía, para la siguiente vez ya lo se

Gracias!!!

Etiquetas: html, link, botones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:38.