Pregunta

Esta es una publicación repetida con más información ...

Creo dinámicamente un grupo de etiquetas, y las agrego a un I, luego agrego un controlador de clic ...

$(document).ready(function(){
    // ... code to append <a> tags to nav div        
    $("#nav a").click(function(event){ 
       alert('Clicked '+event.target.id);
       return false;
    });
});

Si tengo 10 etiquetas como resultado de esto y hago clic en la primera, recibo 10 alertas (¡DIEZ!), pero todas muestran la identificación de la etiqueta en la que hice clic.

(Si hago clic en la quinta etiqueta, sí, recibo 5 alertas, todas con el ID de la quinta etiqueta ...)

¿Qué está pasando aquí? ¿Es porque he creado dinámicamente las etiquetas? ¿Hay alguna forma de evitarlo?

Aquí está el código que crea las etiquetas a

$(document).ready(function(){
  $.get('_7day-M2.5.xml', {}, function(xml){
    $(xml).find('entry').each(function(i){
      $('#nav').append('<a href="#" id="'+i+'">'+$(this).find("title").text()+"</a><br/>");
    });
  });
});

La salida de Firebug no revela nada extraño.

¿Alguna idea de lo que está pasando aquí?

Gracias

¿Fue útil?

Solución

Intente usar $ (" #nav > a ") como su selector en lugar de $ (" #nav a "). Si eso no funciona, entonces asegúrate de que estás vinculando el evento de clic fuera de los bucles que puedas tener. Por ejemplo, si tiene su enlace de evento de clic dentro de los $ .each () que tiene al crear las etiquetas de anclaje, se creará más de un evento de clic.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top