2010-05-19 41 views
5

我有動態生成的按鈕的列表,id是在運行時生成的。如何使用JQuery獲取點擊按鈕的id。使用jquery獲取按鈕單擊元素的ID

這裏是js代碼,你發佈的代碼編輯後

var btn = " <input type='button' id='btnDel' value='Delete' />"; 


$("#metainfo").append(txt); //set value of 

$("#btnDel").attr("id", "btnDel" + $("#hid").attr("value")); 
+0

添加類像'generatedButton'或者任何你想要的這些動態創建的按鈕,然後你可以使用Jan Willem B的答案:http://stackoverflow.com/questions/2864327/get-id-of-element-on-button-click-using -jquery/2864340#2864340 – jigfox 2010-05-19 10:15:22

+0

爲什麼首先更改按鈕的ID?我發現一件奇怪的事情... – RoToRa 2010-05-19 10:44:01

回答

23

爲了您例如,它會是這樣:

$("#btnDel").click(function() { 
    alert(this.id); 
}); 

注意您無法循環使用您的代碼,ID爲必須是唯一的,如果它們不是,你會得到各種各樣的副作用,因爲它是無效的HTML。如果您想對任何輸入點擊處理程序,改變選擇,就像這樣:

$("input").click(function() { 
    alert(this.id); 
}); 
+0

所有動態按鈕都有唯一的ID,並且您的代碼無法使用。 – Xulfee 2010-05-19 10:13:54

+0

@Xulfee - 您是在創建按鈕之前,還是在創建並設置ID之後運行它?如果是之前的版本,則需要使用'.live('click',function(){})'而不是'.click(function(){})' – 2010-05-19 10:41:54

1
$('.generatedButton').click(function() { 
    alert(this.id); 
}); 

var btn = 
    $("<input type='button' value='Delete' />") 
    .attr("id", "btnDel" + $("#hid").val()) 
    .click(function() { 
     alert(this.id); 
    }); 
$("body").append(btn); 
+0

什麼是.generatedButton? – Xulfee 2010-05-19 09:43:59

+0

@Xulfee這是一個例子,你可以如何將'generatedButton'(沒有點)添加到你的按鈕的''class''屬性中以使用jQuery來查找它(http://api.jquery.com/class-selector/) – jigfox 2010-05-19 09:50:17

+0

您在問題中發佈的代碼不起作用(例如,btn var僅包含一個帶有HTML的字符串,如果它由瀏覽器呈現,而不是按鈕本身,則會導致按鈕),但是我更新了此答案試圖幫助你。 – 2010-05-19 10:28:46

0

您應該添加按鈕的單擊事件後的文件已準備就緒(加載):

$(document).ready(function(){ 
    $("#btnDel").click(function() { 
     alert('Button clicked.'); 
    }); 
}); 
+1

用解釋編輯答案! – gsamaras 2015-04-10 14:12:08