2013-11-14 50 views
1

我很努力地使用jquery來識別我點擊的按鈕。從列表中獲取點擊輸入的正確名稱JQUERY

我有一個動態生成的列表類別以及刪除按鈕從數據庫中刪除它。

我的輸入是這樣的:

<input id="deletesector" class="deletesector" type="submit" name="deletesector-4" value="Remove"></input> 
<input id="deletesector" class="deletesector" type="submit" name="deletesector-5" value="Remove"></input> 
<input id="deletesector" class="deletesector" type="submit" name="deletesector-6" value="Remove"></input> 

我的劇本偵聽.deletesector點擊然後拿到ATTR名。但是,無論點擊3個按鈕中的哪一個,它都會返回deletesector-4的名稱。

我該如何解決這個問題,以便如果單擊「deletesector-5」,它會將其標識爲這樣。

$(".deletesector").click(function() { 

    //store the id 
    var name = $("input#deletesector").attr('name'); 

    //create the post variable string 
    var dataString = 'serviceid='+ name; 
    alert (dataString); 
+1

[一個'id' ***在文檔***中必須是唯一的](http://www.w3.org/TR/html401/struct/global.html#h-7.5.2),否則HTML無效。這使得JavaScript打破了,小狗哭了。 –

+0

'name'是一個PROPERTY還是一個ATTRIBUTE? –

+0

@MilchePatern我想這取決於他使用的是什麼版本的jQuery .... – Rooster

回答

1

用途:

$(".deletesector").click(function(){ 
    var name = $(this).attr('name'); 
    // your stuff here 
}); 

this在一個jQuery事件是指被點擊的元素。

此外,你的重複id s會搞砸了。

查看此JSFiddle作爲一個工作示例。

3

使用this的點擊處理程序的匿名函數內部:

$(".deletesector").click(function(){ 
    var name = this.name 
}); 

你總是拿到的deleteselector4name的原因是因爲這是第一次(但不是唯一的)與deleteselectorid元素,爲使HTML有效,一個id必須是唯一的。考慮到這一點id選擇永遠只能找一個元素,當他們通過id搜索,並停止在該第一元,假定它與id的唯一元素(因爲它應該是)。

鑑於HTML中的idclass相同,請刪除id,因爲它沒有任何用處,並且會主動損害HTML的有效性。

參考文獻:

0

首先,你有一些重複的ID。 這裏是固定的代碼:

<input id="deletesector-4" class="deletesector" type="submit" name="deletesector-4" value="Remove"></input> 
<input id="deletesector-5" class="deletesector" type="submit" name="deletesector-5" value="Remove"></input> 
<input id="deletesector-6" class="deletesector" type="submit" name="deletesector-6" value="Remove"></input> 

然後你jQuery的可能是這樣的:

$(".deletesector").click(function(ev) { 
    // CHECK THIS $(ev.target) element, very useful! 
    elementClicked = $(ev.target); 
    var name = elementClicked.attr('name'); 
    var dataString = 'serviceid='+ name; 
    alert (dataString); 
}); 

Here is a JSFiddle,顯示你的榜樣工作。