2008-09-04 99 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时,你通常不需要做那种事情。