2013-04-18 37 views
27

我使用下面的代碼來檢測何時動態生成的按鈕被點擊。在事件上使用jQuery獲取單擊的元素?

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

通常情況下,如果你只是做$('.appDetails').click()你可以使用$(this)獲得被點擊的元素。我如何用上面的代碼來完成這個任務?

例如:

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

回答

35

簡單,因爲它可以

使用$(this)這裏也

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

更新問題 –

+0

是看到它.. u能烏拉圭回合後也HTML – bipen

+0

看起來像我處理來自服務器的緩存問題。抱歉。 –

23

你缺少你的函數事件參數。

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

這對我來說非常完美。它給出了被點擊的元素 - $(this)只給出了附加事件的元素。 –

2

處理這並不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')); 
}); 
相關問題