Ich benutze den jetzt klassischen ".on" jquery-Handler, um den Klick auf einen Anker zu überprüfen, den ich mit append hinzugefügt habe.jQuery: Wie bekomme ich param vom HTML-Element, das mit .append hinzugefügt und mit .on behandelt wird?
$('#selector-to-thing-that-exists').on('click', '.thing-that-will-be-added-later', function() {
//I want to get the "data-pointnumber" and "data-goodanswer" on the clicked element.
});
Das Problem hierbei ist, dass $ (this) geben Sie mir das $ ('# Selektor-to-Ding, dass-exists') und nicht das klickten Element (es ist ein Link). Bin ich klar genug?
$.each(this.currentQuestion.Reponse,function (arrayID,rep) {
$('#QuestionContainerSingle').find('.liste-boutons').append('<li><a href="" class="button-big btn-rep" data-nbpoints="'+rep.NbPoints+'" data-bonne="'+rep.Bonne+'">'+rep.Texte+'</a></li>');
});
$('#QuestionContainerSingle').on('click','.btn-rep',function (e) {
e.preventDefault();
console.log($(this).attr('data-nbpoints'));
});
Hier ist der html ... Da es Teil einer größeren Anwendung ist es nicht einfach ist einfach zu extrahieren, was ich für diese Frage brauchen!
<div class="question-content" id="QuestionContainerSingle">
<div class="header-question">
<p class="intitule">
</p>
</div>
<div class="content">
<div class="title-box">Find the best answer</div>
<ul class="liste-boutons">
</ul>
</div>
</div>
$ (this) würde Ihnen die Klasse geben ".thing-that-wird-später hinzugefügt", nicht # Selector-to-thing-that-exists. Der zusätzliche Parameter, der zwischen click und function() übergeben wird, ist im Grunde genommen das Zielelement in # select-to-thing-that-exists. Auch, wenn Sie das HTML hinzufügen könnten, würde es helfen, das genaue Problem herauszufinden – DinoMyte
Ich redigierte meine Frage mit etwas html und ändere ein wenig mein JS, um klarer zu sein ... Ich verstehe noch nicht, warum $ (dieses) tun gib mir nicht das geklickte Element ".btn-rep" zurück. Beachten Sie, dass "e.target" mir das gute Element zurückgibt! – Dantahoua