2011-10-09 53 views
1

我檢查了一些被問到的類似問題。如何在jQuery中單擊時獲取按鈕的ID?

我想添加/刪除按鈕,當用戶動態地點擊添加/刪除按鈕。因此,每個按鈕都必須有一個唯一的ID來標識自己。

下面是HTML代碼的一部分:

<p id="q1">Question: 1<input type="text" class="ttt"/> 
<button class="buttonPlus" type="button"></button> 
<button class="buttonMinus" type="button" id="1"></button></p> 

這裏是jQuery代碼的一部分:除了上述方法

var questionCount = 1; 
$("#q1").append("<p id='p2'>Question: " + ++questionCount + "<input type='text'>\ 
<button type='button' class='buttonPlus'></button>\ 
<button type='button' class='buttonMinus' id=questionCount></button></p>"); 
//Re-binding 
var newBtnPlus = $("#q1").find('.buttonPlus:last'); 
var newBtnMinus = $("#q1").find('.buttonMinus:last'); 
newBtnPlus.click(function(){ 
    btnPlsClickEvent(newBtnPlus); 
}); 
newBtnMinus.click(function() { 
    btnMnsClickEvent(newBtnMinus); 
}); 



function btnMnsClickEvent(btn) { 
var idNum = $(this).attr("id"); 
alert(idNum);} 

,我曾嘗試: ALTER(this.id) ; alter(btn.id); .etc。

我不知道爲什麼我不能得到我已動態分配給減號按鈕的id,也不能獲得由html完成的靜態分配的id。

我一直堅持這個問題幾個小時。 你能幫我嗎?

感謝, 阿什利

+0

我假設你將減號/加號事件綁定到多個元素,因此需要分隔「btnMnsClickEven」fu nctions? –

+0

你期望得到什麼回報?一些注意事項:使用以數字開頭的ID在語義上是非法的。此外,當您通過javascript創建元素時,您設置的ID缺少引號。 – kroehre

回答

3

簡單地傳遞一個參考按鈕,當你去調用泛型函數:

newBtnMinus.click(function() { 
    btnMnsClickEvent(this); // use "this" instead of your selector object 
}); 

function btnMnsClickEvent(btn) { 
    var idNum = btn.id; // now reference the button you pass 
    alert(idNum); 
} 
+0

+1幫助你達到那20K大關;) – AlienWebguy

+0

@AlienWebguy:哈哈,謝謝。儘管聲譽只是幫助的額外獎勵。 ;-) –

+0

我不同意 - 代表解鎖權限,讓我們更好地貢獻。在20k你是一個值得信賴的用戶,我的朋友:) http://stackoverflow.com/privileges/trusted-user – AlienWebguy

1

無需使用$(this).attr('id')時,你可以簡單地使用this.id

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