Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/06/2012, 08:34
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
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).