2013-04-18 9 views
27

Sto utilizzando il seguente codice per rilevare quando viene fatto clic su un pulsante generato dinamicamente.Ottieni l'elemento selezionato usando jQuery sull'evento?

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

Normalmente, se hai appena fatto $('.appDetails').click() si potrebbe usare $(this) per ottenere l'elemento che è stato cliccato. Come potrei realizzare questo con il codice sopra?

Per esempio:

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

risposta

35

Tanto semplice come può essere

Usa $(this) anche qui

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

aggiornato domanda –

+0

sì vide .. u può inviare ur html troppo – bipen

+0

Sembra che ho a che fare con un problema di cache dal server. Scusate. –

23

Ti manca il parametro dell'evento sulla vostra funzione.

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

Questo è stato perfetto per me. Dà l'elemento che è stato cliccato - $ (this) ha dato solo l'elemento che ha avuto l'evento allegato. –

2

Il modo convenzionale di gestire questo non funziona bene con ES6. Si può fare questo, invece:

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

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

Nota che l'obiettivo dell'evento sarà l'elemento cliccato, che non può essere l'elemento che si desidera (che potrebbe essere un bambino che ha ricevuto l'evento). Per ottenere l'elemento effettivo:

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

    this.delete(targetElement.data('id')); 
}); 
Problemi correlati