Ich verwende den folgenden Code, um zu erkennen, wann auf eine dynamisch generierte Schaltfläche geklickt wird.
$(document).on("click",".appDetails", function () {
alert("test");
});
Wenn Sie dies nur getan haben, können $('.appDetails').click()
Sie normalerweise $(this)
das Element abrufen, auf das geklickt wurde. Wie würde ich dies mit dem obigen Code erreichen?
Zum Beispiel:
$(document).on("click",".appDetails", function () {
var clickedBtnID = ??????
alert('you clicked on button #' + clickedBtnID);
});
jquery
event-handling
click
jquery-events
Des Teufels Anwalt
quelle
quelle
Sie vermissen den Ereignisparameter in Ihrer Funktion.
$(document).on("click",".appDetails", function (event) { alert(event.target.id); });
quelle
Die herkömmliche Vorgehensweise spielt mit ES6 nicht gut. Sie können dies stattdessen tun:
$('.delete').on('click', event => { const clickedElement = $(event.target); this.delete(clickedElement.data('id')); });
Beachten Sie, dass das Ereignisziel das angeklickte Element ist, das möglicherweise nicht das gewünschte Element ist (es kann sich um ein untergeordnetes Element handeln, das das Ereignis empfangen hat). So erhalten Sie das eigentliche Element:
$('.delete').on('click', event => { const clickedElement = $(event.target); const targetElement = clickedElement.closest('.delete'); this.delete(targetElement.data('id')); });
quelle
Eine einfache Möglichkeit besteht darin, das Datenattribut an Ihr HTML-Tag zu übergeben.
Beispiel:
<div data-id='tagid' class="clickElem"></div> <script> $(document).on("click",".appDetails", function () { var clickedBtnID = $(this).attr('data'); alert('you clicked on button #' + clickedBtnID); }); </script>
quelle