这可能是一个非常简单的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时,你通常不需要做那种事情。