Я использую следующий код, чтобы определить, когда нажимается динамически созданная кнопка.
$(document).on("click",".appDetails", function () {
alert("test");
});
Обычно, если вы только что сделали, $('.appDetails').click()
вы могли бы использовать, $(this)
чтобы получить элемент, на который щелкнули. Как мне добиться этого с помощью приведенного выше кода?
Например:
$(document).on("click",".appDetails", function () {
var clickedBtnID = ??????
alert('you clicked on button #' + clickedBtnID);
});
jquery
event-handling
click
jquery-events
Адвокат дьявола
источник
источник
Вам не хватает параметра события в вашей функции.
$(document).on("click",".appDetails", function (event) { alert(event.target.id); });
источник
Обычный способ справиться с этим не очень хорошо работает с ES6. Вместо этого вы можете сделать это:
$('.delete').on('click', event => { const clickedElement = $(event.target); this.delete(clickedElement.data('id')); });
Обратите внимание, что целью события будет выбранный элемент, который может быть не тем элементом, который вам нужен (это может быть дочерний элемент, получивший событие). Чтобы получить фактический элемент:
$('.delete').on('click', event => { const clickedElement = $(event.target); const targetElement = clickedElement.closest('.delete'); this.delete(targetElement.data('id')); });
источник
Самый простой способ - передать атрибут данных в ваш HTML-тег.
Пример:
<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>
источник