2012-02-03 35 views
0

jQuery 1.7.1 - 我有一個複選框列,並希望獲取所選框的索引作爲數組或遍歷每個複選框 - 檢查是否選中或不選中if選擇獲取索引。jQuery - 獲取所選複選框的索引

HTML

<tr> 
    <td><input type="checkbox" class="it" name="it"></td> 
</tr> 
<tr> 
    <td><input type="checkbox" class="it" name="it"></td> 
</tr> 
+1

這不是有效的有多個'input's相同的形式使用相同的名稱,除非它們是單選按鈕的情況下,本質上是一種「選擇」的擴展形式。 – 2012-02-03 02:23:24

+1

@Kinkink - 這是_not_ true。它不僅有效,而且是表格數據的標準做法,即輸入多個訂單項時。 (提交時,每個重複的參數通常作爲服務器端代碼中的數組處理。) – nnnnnn 2012-02-03 03:00:39

回答

4

如果使用.each() method jQuery將通過該指數作爲參數傳遞給你提供的回調函數。 (你可能會看到很多代碼在回調中使用.each()而沒有參數,但那是因爲你經常不需要知道索引 - 但是當你這樣做的時候它就在那裏)。另外,當調用你的函數jQuery設置this當前元素:

$(".it").each(function(i) { 
    if (this.checked) { 
     alert("Checkbox at index " + i + " is checked."); 
    } 
}); 

注意到索引是基於零的,並且在情況下,它不是很明顯它是一組匹配你提供的選擇器(元件處的索引不能在所有元素中該文件)。

還要注意的是上面我選擇由類元素,但是你可以通過name屬性選擇:

$('input[name="it"]') 
+0

優秀。謝謝@nnnnnn。此外,如何使用索引像'$(「.pr」)[i] .val()'從隱藏輸入類型的數組中檢索特定值。你想讓我爲此提出一個單獨的問題嗎? – SyAu 2012-02-03 03:35:21

+1

'$(「。pr」)[i] .value' - 如果您知道索引,您可以使用jQuery對象進行數組式的訪問,但它會返回實際的DOM元素,因此您不能使用''等jQuery方法。 val()'的結果,但可以通過使用標準html輸入元素'value'屬性來獲取值。 – nnnnnn 2012-02-03 04:03:49

+0

再次感謝@nnnnnn。一段時間以來,我一直在爲此而頭痛。 – SyAu 2012-02-03 04:23:37

2
var index = 0; 
$('.it').each(function() { 
    if (this.checked) { 
     alert("Box is checked at index=" + index); 
    } 
    index++; 
}); 

例子:http://jsfiddle.net/bvUND/

+0

它可以工作。謝謝。 jQuery提供了一種獲取索引而不是聲明變量'索引'的方法嗎?像'this.index'。 – SyAu 2012-02-03 02:37:49

0

這是一個老帖子,但我碰到它,而在其他地方幫忙,只是想請添加一些關於您沒有顯式索引var的請求以跟蹤索引的代碼。從index()返回的值是從零開始的。

var myCheckboxes = $("input[type=checkbox].it"); 

myCheckboxes.each(function(){ 
    alert(myCheckboxes.index(this)); 
    // do whatever you need with the index of the checkbox 
} 

更多的.index()可以在這裏找到:http://api.jquery.com/index/