2016-04-23 14 views
3

jQuery 2.2.3Zugriff auf Daten („“) von dynamisch erstellten Listenelementen

Ich habe eine dynamischen Liste von Elementen, die im laufenden Betrieb erstellt/Orte entfernt:

<ul id="tracks"> 
    <button class="createRace" data-trackcode="410243">Create Race</button> 
    <button class="createRace" data-trackcode="123540">Create Race</button> 
    ... 
</ul> 

Ich bin Verwenden Sie die folgende Technik, um auf Tastenklicks zu reagieren.

$("#tracks").on("click", ".createRace", createRaceClick); 

Meine createRaceClick() Funktion aufgerufen wird, aber die „dieses“ Objekt #tracks verweist, nicht die button die gedrückt wurde.

Wie kann ich feststellen, welche Taste gedrückt wurde? Oder genauer gesagt, wie bekomme ich die data("trackcode") mit der tatsächlichen Taste verbunden, die gedrückt wurde.

Dank

Antwort

1

Nun, das ist seltsam, da in diesem Zusammenhang mit der Veranstaltung Delegation sollte this auf die button beziehen, die clicked war. Sie können jedoch target Eigenschaft des event object verwenden, um die .createRace zu erhalten, die den Klick event angehoben:

$("#tracks").on("click", ".createRace", createRaceClick); 

function createRaceClick(e){ 

    var data=$(e.target).data('trackcode'); // $(this).data('trackcode') should work 
} 
+1

Danke. Das hat perfekt funktioniert. Ich denke, da $ ("# tracks") das "on" angehängt hat, dann ist das der Kontext, der an die Event-Funktion übergeben wird. –

Verwandte Themen