2015-02-04 3 views
5

Hier ist mein HTML-Codekonnte nicht bekommen Wert von Datenattribut mit jQuery

<select class="changeOption"> 
{% for dBoy in dBoyList %} 
    <option value="{{dBoy.id}}" data-locid='{{dboy.location.id}}' 
{% endfor %} 
</select> 

Wenn ich wählen bin eine Option in der Dropdown-Liste zeigt sie undefine

JQuery Code

$(".changeOption").change(function() { 
    var locId = $(this).data("locid") 
    alert("id: "+locId); 
}); 
+0

In Ihrem jQuery bezieht sich '$ (this)' auf die Auswahl, nicht die Option. – j08691

+0

Randnotiz: Wenn Sie nicht 'Daten' für andere Dinge später verwenden, macht die Verwendung von' data', nur um auf den Wert eines 'data- *' - Attributs zuzugreifen, eine Menge zusätzlicher Arbeit; Verwenden Sie stattdessen 'attr'. Natürlich, wenn Sie "Daten" für Dinge im Code verwenden, die Sie nicht gezeigt haben, würde das natürlich nicht gelten. –

Antwort

4

this bezieht sich auf den Kontext des ausgewählten Elements. Sie müssen die ausgewählte Option darin finden und dann das Attribut:

$(".changeOption").change(function() { 
    var locId = $(this).find(':selected').data("locid") 
    alert("id: "+locId); 
}); 
+0

Ja, gerade festgestellt, dass die 'Daten' in * seinem * Code sind, sollte der Kommentar auf ihn gerichtet sein. –

Verwandte Themen