2008-09-04 36 views
4

這可能是一個非常簡單的jQuery的問題,但文檔所以在10分鐘後我不能回答這個問題......jQuery的切片,然後單擊事件

我有一個複選框列表,我可以讓他們與選擇器'input[type=checkbox]'。我希望用戶能夠按住shift鍵並選擇一系列複選框。爲了達到這個目的,我需要獲得列表中複選框的索引,所以我可以將該索引傳遞給.slice(start, end)。用戶點擊一個框時如何獲得索引?

回答

8

以下選擇器也應該在jQuery中工作:。

然後,您可以串:gt(index):lt(index)過濾器一起,所以如果你想在5日至7複選框,你會使用input:checkbox:gt(4):lt(2)

要獲取當前點擊複選框的索引,只需使用$("input:checkbox").index($(this))

1

這是一個快速解決方案,但我想給每個複選框一個唯一的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); 
    }); 
}); 
0

謝謝你的回答,samjudson。

經過進一步的實驗,我發現你甚至可以使用$(':checkbox')來選擇它們。有趣的是,您可以使用.slice()函數獲取範圍,但您也可以選擇使用:gt:lt進行選擇。不過,我發現.slice()的語法比使用選擇器過濾器更清晰。

我將不得不說我不喜歡Ryan Duffield的解決方案,因爲它需要對標記進行更改,並且需要重複代碼。

1

@Gorgapor:我想我有時需要少一點問題。 :-)我想你已經被鎖定到需要某種索引。我想你會發現儘管如此,當你更多地使用jQuery時,你通常不需要做那種事情。