這可能是一個非常簡單的jQuery的問題,但文檔所以在10分鐘後我不能回答這個問題......jQuery的切片,然後單擊事件
我有一個複選框列表,我可以讓他們與選擇器'input[type=checkbox]'
。我希望用戶能夠按住shift鍵並選擇一系列複選框。爲了達到這個目的,我需要獲得列表中複選框的索引,所以我可以將該索引傳遞給.slice(start, end)
。用戶點擊一個框時如何獲得索引?
這可能是一個非常簡單的jQuery的問題,但文檔所以在10分鐘後我不能回答這個問題......jQuery的切片,然後單擊事件
我有一個複選框列表,我可以讓他們與選擇器'input[type=checkbox]'
。我希望用戶能夠按住shift鍵並選擇一系列複選框。爲了達到這個目的,我需要獲得列表中複選框的索引,所以我可以將該索引傳遞給.slice(start, end)
。用戶點擊一個框時如何獲得索引?
以下選擇器也應該在jQuery中工作:。
然後,您可以串:gt(index)
和:lt(index)
過濾器一起,所以如果你想在5日至7複選框,你會使用input:checkbox:gt(4):lt(2)
。
要獲取當前點擊複選框的索引,只需使用$("input:checkbox").index($(this))
。
這是一個快速解決方案,但我想給每個複選框一個唯一的ID,或許與索引提示,像這樣:
<input id="checkbox-0" type="checkbox" />
<input id="checkbox-1" type="checkbox" />
<input id="checkbox-2" type="checkbox" />
<input id="checkbox-3" type="checkbox" />
<input id="checkbox-4" type="checkbox" />
然後,您可以輕鬆獲取指數:
$(document).ready(function() {
$("input:checkbox").click(function() {
index = /checkbox-(\d+)/.exec(this.id)[1];
alert(index);
});
});
謝謝你的回答,samjudson。
經過進一步的實驗,我發現你甚至可以使用$(':checkbox')
來選擇它們。有趣的是,您可以使用.slice()
函數獲取範圍,但您也可以選擇使用:gt
和:lt
進行選擇。不過,我發現.slice()
的語法比使用選擇器過濾器更清晰。
我將不得不說我不喜歡Ryan Duffield的解決方案,因爲它需要對標記進行更改,並且需要重複代碼。
@Gorgapor:我想我有時需要少一點問題。 :-)我想你已經被鎖定到需要某種索引。我想你會發現儘管如此,當你更多地使用jQuery時,你通常不需要做那種事情。