JQuery Click Event Puzzle
Pergunta
Este é um post repetido com mais informações ...
Eu crio um monte de tags dinamicamente, anexando -as a um Manipulador de cliques ...
$(document).ready(function(){
// ... code to append <a> tags to nav div
$("#nav a").click(function(event){
alert('Clicked '+event.target.id);
return false;
});
});
Se eu tiver 10 tags como resultado disso e clicar no primeiro, recebo 10 (dez!) Alertas - mas todos mostram o ID da tag que eu realmente cliquei.
(Se eu clicar na quinta tag, sim, recebo 5 alertas - todos com o ID da 5ª tag ...)
O que está acontecendo aqui? É porque eu criei dinamicamente as tags? Existe uma maneira de evitá -lo?
Aqui está o código que cria as tags 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/>");
});
});
});
A saída do Firebug não revela nada estranho.
Alguma ideia do que está acontecendo aqui?
Obrigado
Solução
Tente usar $ ("#NAV> A") como seu seletor em vez de $ ("#NAV A"). Se isso não funcionar, apenas verifique se você está vinculando o evento de clique fora de qualquer loop que você possa ter. Por exemplo, se você tiver o seu evento de clique em ligação dentro do $ .EECH () que você possui ao criar as tags de âncora, ele criará mais de um evento de clique.