2013-04-18 12 views
27

Ich verwende den folgenden Code, um zu erkennen, wenn auf eine dynamisch generierte Schaltfläche geklickt wird.Get geklickt Element mit jQuery bei Ereignis?

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

Normalerweise, wenn Sie nur $('.appDetails').click() haben könnten Sie $(this) verwenden Sie das Element zu erhalten, die angeklickt wurde. Wie würde ich das mit dem obigen Code erreichen?

Zum Beispiel:

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

Antwort

35

So einfach wie es

Nutzen sein können $(this) auch hier

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

aktualisiert Frage –

+0

ja, es sah .. kann u ur html schreiben zu – bipen

+0

Sieht aus wie ich mit einem Caching-Problem von dem Server zu tun habe. Es tut uns leid. –

23

Sie den Ereignisparameter auf Ihre Funktion fehlt.

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

Das war perfekt für mich. Es gibt das Element, auf das geklickt wurde - $ (this) gab nur das Element, an das das Ereignis angehängt war. –

2

Die herkömmliche Art, dies zu handhaben, spielt mit ES6 nicht gut. Sie können dies stattdessen tun:

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

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

Beachten Sie, dass das Ereignisziel der geklickten Element sein, das nicht das Element, das Sie wollen sein kann (es könnte ein Kind sein, das das Ereignis empfangen wird). Um das eigentliche Element zu erhalten:

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

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