Frage

Dies ist ein Wiederholungsbeitrag mit weiteren Informationen ...

Ich erstelle dynamisch eine Reihe von Tags und füge sie an ein I hinzu. Dann füge ich einen Klick -Handler hinzu ...

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

Wenn ich als Ergebnis davon 10 Tags habe und auf den ersten klicke, bekomme ich 10 (zehn!) Warnungen - aber sie alle zeigen die ID des Tags, auf das ich tatsächlich geklickt habe.

(Wenn ich auf das 5. Tag klicke, yep, bekomme ich 5 Warnungen - alles mit der ID des 5. Tags ...)

Was ist denn hier los? Liegt es daran, dass ich die Tags dynamisch erstellt habe? Gibt es eine Möglichkeit, es zu vermeiden?

Hier ist der Code, der die A -Tags erstellt

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

Firebug -Ausgabe zeigt nichts Seltsames aus.

Irgendeine Idee, was hier los ist?

Vielen Dank

War es hilfreich?

Lösung

Versuchen Sie, $ ("#nav> a") als Selektor anstelle von $ ("#nav a") zu verwenden. Wenn das nicht funktioniert, stellen Sie einfach sicher, dass Sie das Klickereignis außerhalb aller Schleifen, die Sie möglicherweise haben, einbinden. Wenn Sie beispielsweise Ihre Klickereignisbindung innerhalb von $ .each () haben, die Sie beim Erstellen der Anker -Tags haben, werden mehr als ein Klickereignis erstellt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top