Entschuldigung im Voraus Ich fühle mich, als ob dies eine sehr einfache Lösung ist und ich bin in der Mitte eines schweren Hirn Furz. Ich versuche einfach, die Daten-ID eines Elements, auf das ich klicke, mit ES6-Syntax zu erfassen, aber egal, wie ich es ausführe, werde ich undefiniert.Nicht in der Lage Daten-ID zu finden, wenn Element
HTML
<ul>
<li class="list-item" data-id="item-1">Click me</li>
<li class="list-item" data-id="item-2">Click me</li>
<li class="list-item" data-id="item-3">Click me</li>
</ul>
JS
let $el = $('ul');
class List {
constructor($el) {
this.$el = $el;
this.$listItem = $el.find('li');
this.attachHandlers();
}
attachHandlers() {
this.$listItem.on('click',() => {
var data = $(this).attr('data-id');
console.log(data);
});
}
}
const _init =() => {
if ($el.length) {
$el.each((i, v) => {
new List($(v));
});
}
};
_init();
Ive den Code unten so weit wie möglich vereinfacht, jemand sehen, was ich hier falsch mache?
dies scheint die Daten-ID Inhalt des ersten Elements in der Liste zurückzukehren, nicht von dem Element, auf das geklickt wurde. Wenn ich das Ereignis über und console.log e.currentTarget übergebe, kann ich das korrekte Element sehen, aber es gibt immer die Daten-ID des ersten Elements zurück – user934902
@ user934902 - Ja, weil Ihr Konstruktor immer das erste 'li' als' setzt dies. $ listItem'. – 31piy
dann bin ich verwirrt über Ihre Antwort auf, wie die Verwendung der Pfeil-Funktion, wie Sie beschrieben haben, wird mein Problem lösen – user934902