Estoy usando el siguiente código para detectar cuándo se hace clic en un botón generado dinámicamente.
$(document).on("click",".appDetails", function () {
    alert("test");
});
Normalmente, si lo hiciera $('.appDetails').click(), podría usar $(this)para obtener el elemento en el que se hizo clic. ¿Cómo podría lograr esto con el código anterior?
Por ejemplo:
$(document).on("click",".appDetails", function () {
    var clickedBtnID = ??????
    alert('you clicked on button #' + clickedBtnID);
});
                    
                        jquery
                                event-handling
                                click
                                jquery-events
                                
                    
                    
                        Abogado del diablo
fuente
                
                
            fuente

Falta el parámetro de evento en su función.
$(document).on("click",".appDetails", function (event) { alert(event.target.id); });fuente
La forma convencional de manejar esto no funciona bien con ES6. Puedes hacer esto en su lugar:
$('.delete').on('click', event => { const clickedElement = $(event.target); this.delete(clickedElement.data('id')); });Tenga en cuenta que el objetivo del evento será el elemento en el que se hizo clic, que puede no ser el elemento que desea (podría ser un niño que recibió el evento). Para obtener el elemento real:
$('.delete').on('click', event => { const clickedElement = $(event.target); const targetElement = clickedElement.closest('.delete'); this.delete(targetElement.data('id')); });fuente
Una forma sencilla es pasar el atributo de datos a su etiqueta HTML.
Ejemplo:
<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>fuente