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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top