有人可以请look at this吗?
你会看到第一个警告打印-1而我期待1.任何人都知道为什么?
小提琴的基本代码:
<input type="checkbox" value="0" />0
<input type="checkbox" value="1" />1
<input type="checkbox" value="2" />2
<input type="checkbox" value="3" />3
alert($(':checkbox').index("input[value='1']"));
alert($(':checkbox').index("input[value='0']"));
答案 0 :(得分:4)
你的选择器被颠倒了:
示例: http://jsfiddle.net/RaV35/
// element---v collection----------v
alert($("input[value='0']").index(":checkbox"));
alert($("input[value='1']").index(":checkbox"));
将index()
[docs]方法传递给选择器时,您希望索引的单个元素是调用.index()
的元素。
传递给.index()
的选择器表示测试原始jQuery对象中元素的集合。
当原始jQuery对象(左侧)也包含一个集合时,只测试第一个对象的右侧选择器的索引。这就是value="0"
正在工作的原因。
// v--- only the first is tested (and it has value="0")...
$(':checkbox').index("input[value='0']")
// ----------------------^ ...and it is at index 0 of this "collection"
答案 1 :(得分:0)
alert($(':checkbox[value='1']').index());
alert($(':checkbox[value='0']').index());
答案 2 :(得分:0)
你需要传递一个jQuery对象:http://jsfiddle.net/ybKzJ/1/
alert($(':checkbox').index($("input[value='1']")));
alert($(':checkbox').index("input[value='0']"));
编辑:
不,这似乎不对,因为第二个工作正常。
... ...好奇
答案 3 :(得分:0)
我不确定为什么你必须使用index()
。为什么不把它全部放在选择器中:
$('input:checkbox[value="2"]');
你可以看到它在这个小提琴中起作用:http://jsfiddle.net/jfriend00/Xa6hA/
如果您确实想要分多个阶段进行,那么我这样做更合乎逻辑:
$('input:checkbox').filter('[value="3"]');
这会获取所有复选框,然后过滤列表中只包含value="3"
的复选框,这似乎比index()
的工作方式更直观。