puzzle evento jquery click
Domanda
Questo è un post ripetuto con maggiori informazioni ...
Creo dinamicamente un gruppo di tag, aggiungendoli a un, quindi aggiungo un gestore di clic ...
$(document).ready(function(){
// ... code to append <a> tags to nav div
$("#nav a").click(function(event){
alert('Clicked '+event.target.id);
return false;
});
});
Se ho 10 tag come risultato di questo e faccio clic sul primo, ricevo 10 avvisi (TEN!) - ma tutti mostrano l'id del tag su cui ho effettivamente cliccato.
(Se faccio clic sul 5 ° tag, sì, ricevo 5 avvisi - tutti con l'ID del 5 ° tag ...)
Cosa sta succedendo qui? È perché ho creato dinamicamente i tag? C'è un modo per evitarlo?
Ecco il codice che crea i tag 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/>");
});
});
});
L'output di Firebug non rivela nulla di strano.
Qualche idea su cosa sta succedendo qui?
Grazie
Soluzione
Prova a utilizzare $ (" #nav > a ") come selettore anziché $ (" #nav a "). Se il problema persiste, assicurati di vincolare l'evento click all'esterno di eventuali loop che potresti avere. Ad esempio se hai il tuo evento click click all'interno di $ .each () che hai quando crei i tag anchor, creerà più di un evento click.