Question

Ceci est un post de répétition avec plus d'informations ...

Je crée un groupe de balises de manière dynamique, en les ajoutant à un I, puis en ajoutant un gestionnaire de clics ...

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

Si, à la suite de cela, j'ai 10 tags et que je clique sur le premier, je reçois 10 alertes (DIX!), mais ils affichent tous l'id du tag sur lequel j'ai cliqué.

(Si je clique sur la 5ème balise, oui, je reçois 5 alertes - toutes avec l'identifiant de la 5ème balise ...)

Qu'est-ce qui se passe ici? Est-ce parce que j'ai créé dynamiquement les tags? Y a-t-il un moyen de l'éviter?

Voici le code qui crée les balises

$(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 sortie de Firebug ne révèle rien d’extraordinaire.

Avez-vous une idée de ce qui se passe ici?

Merci

Était-ce utile?

La solution

Essayez d’utiliser $ ("#nav > a") comme sélecteur au lieu de $ ("#nav a"). Si cela ne fonctionne pas, assurez-vous simplement de lier l'événement click en dehors des boucles que vous pourriez avoir. Par exemple, si vous avez votre liaison d'événement de clic à l'intérieur de la variable $ .each () que vous avez lors de la création des balises d'ancrage, elle créera plusieurs événements de clic.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top