2015-04-23 21 views
0

我有一些動態創建的按鈕:ID動態創建的按鈕未定義

<input type='button' id='remove_"+ii+"' class='removeItem' value='remove'> 

的二值是無關緊要的。

我想要聽這些按鈕被點擊,並做一些事情:

$(document).on('click',$('.removeItem'),function(){ 
    alert($(this).attr('id')); 
}); 

然而,該警報是給我「未定義」。至少我期望看到「remove_」..

我在想什麼?

+2

'$(文件)。在( '點擊',$()函數( ){'應該是'$(document).on('click','。removeItem',function(){'...不應該使用'$('。removeItem')' –

回答

2

我認爲問題在於您註冊事件處理程序的方式。在你的情況下,當你嘗試使用事件委託時,你傳遞一個jQuery對象作爲第二個參數。

因爲你需要一個字符串選擇作爲第二PARAM傳遞給.on()

$(document).on('click', '.removeItem',function(){ 
    alert($(this).attr('id')); 
}); 

演示活動代表團:Fiddle

爲什麼?
由於on()方法允許傳遞一個對象作爲其參數,該參數將被傳遞給event.data屬性中的處理程序,因此您的處理程序不是使用事件委託而是將事件數據作爲jQuery對象的document對象添加到處理程序中。所以this處理程序內部參考document對象不具備id財產

演示: '的removeItem' Fiddle

+0

即將發佈此。JSFiddle在http://jsfiddle.net/d9hpxnre/上證明他是正確的 – SpoonNZ