2009-10-23 8 views
0

Ceci est un message de répétition avec plus d'info ...événement click jquery casse-tête

Je crée un groupe de balises dynamiquement, en les ajoutant à ajouter ensuite un gestionnaire 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 j'ai 10 tags à la suite de cela et que je clique sur le premier, j'ai 10 alertes (TEN!) - mais elles affichent toutes l'identifiant de la balise sur laquelle j'ai cliqué.

(Si je clique sur le 5ème étiquette, eh oui, je reçois 5 alertes - le tout avec l'id du 5ème étiquette ...)

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 d'un

$(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/>"); 
    }); 
    }); 
}); 

sortie Firebug ne révèle rien regarder bizarre.

Une idée de ce qui se passe ici?

Merci

+0

pouvez-vous poster le code pour la div nav. Je veux dire, faites un clic droit et afficher la source. donc je peux voir le code des liens. s'il vous plaît –

Répondre

2

Essayez d'utiliser $ ("# nav> un") comme sélecteur au lieu de $ ("# nav a"). Si cela ne fonctionne pas, alors assurez-vous que vous liez l'événement click en dehors des boucles que vous pourriez avoir. Par exemple, si vous avez votre événement de clic lié à l'intérieur du $ .each() que vous avez lors de la création des balises d'ancrage, il va créer plus d'un événement de clic.

+0

"alors assurez-vous juste que vous liez l'événement click en dehors des boucles que vous pourriez avoir" ... C'était tout! Je faisais exactement ce que vous disiez - en liant un $ .each(). Merci beaucoup – Paul

Questions connexes