Używam następującego kodu, aby wykryć kliknięcie przycisku generowanego dynamicznie.
$(document).on("click",".appDetails", function () {
alert("test");
});
Zwykle, jeśli właśnie to zrobiłeś, $('.appDetails').click()
możesz użyć $(this)
do pobrania klikniętego elementu. Jak mógłbym to osiągnąć za pomocą powyższego kodu?
Na przykład:
$(document).on("click",".appDetails", function () {
var clickedBtnID = ??????
alert('you clicked on button #' + clickedBtnID);
});
jquery
event-handling
click
jquery-events
Adwokat diabła
źródło
źródło
W funkcji brakuje parametru zdarzenia.
$(document).on("click",".appDetails", function (event) { alert(event.target.id); });
źródło
Konwencjonalny sposób radzenia sobie z tym nie sprawdza się w ES6. Możesz to zrobić zamiast tego:
$('.delete').on('click', event => { const clickedElement = $(event.target); this.delete(clickedElement.data('id')); });
Zwróć uwagę, że celem zdarzenia będzie kliknięty element, który może nie być żądanym elementem (może to być element podrzędny, który odebrał zdarzenie). Aby uzyskać rzeczywisty element:
$('.delete').on('click', event => { const clickedElement = $(event.target); const targetElement = clickedElement.closest('.delete'); this.delete(targetElement.data('id')); });
źródło
Prostym sposobem jest przekazanie atrybutu danych do tagu HTML.
Przykład:
<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>
źródło