2013-04-18 11 views
27

Korzystam z następującego kodu, aby wykryć, kiedy kliknięto przycisk generowany dynamicznie.Uzyskaj kliknięcie elementu za pomocą jQuery na wydarzenie?

$(document).on("click",".appDetails", function() { 
    alert("test"); 
}); 

Normalnie, jeśli tylko nie $('.appDetails').click() można użyć $(this) aby uzyskać element, który został kliknięty na. Jak mam to osiągnąć przy pomocy powyższego kodu?

Na przykład:

$(document).on("click",".appDetails", function() { 
    var clickedBtnID = ?????? 
    alert('you clicked on button #' + clickedBtnID); 
}); 

Odpowiedz

35

Tak proste, jak to może być

Zastosowanie $(this) tutaj zbyt

$(document).on("click",".appDetails", function() { 
    var clickedBtnID = $(this).attr('id'); // or var clickedBtnID = this.id 
    alert('you clicked on button #' + clickedBtnID); 
}); 
+0

zaktualizowane pytanie –

+0

tak zobaczyłem go .. może u post ur html zbyt – bipen

+0

Wygląda jak mam do czynienia z kwestii buforowania z serwera. Przepraszam. –

23

Brakuje parametru wydarzenie na swojej funkcji.

$(document).on("click",".appDetails", function (event) { 
    alert(event.target.id); 
}); 
+3

To było dla mnie idealne. Daje element, który został kliknięty - $ (ten) podał tylko element, do którego dołączono wydarzenie. –

2

Konwencjonalny sposób obsługi tego nie działa dobrze z ES6. Można to zrobić w zamian:

$('.delete').on('click', event => { 
    const clickedElement = $(event.target); 

    this.delete(clickedElement.data('id')); 
}); 

Należy zauważyć, że cel wydarzeniem będzie elementem kliknięciu, który nie może być elementem chcesz (może to być dziecko, które otrzymało event). Aby uzyskać rzeczywiste elementu:

$('.delete').on('click', event => { 
    const clickedElement = $(event.target); 
    const targetElement = clickedElement.closest('.delete'); 

    this.delete(targetElement.data('id')); 
}); 
Powiązane problemy