jQuery只更改复选框名称数组的某个索引

时间:2017-01-31 08:44:09

标签: jquery checkboxlist

我有一个复选框数组和一个checkall / uncheck all函数。当我取消选中所有内容时,我想确保第一个仍然检查但是它不能按照以下方式工作:

$("input[name='temps[]']").removeAttr("checked");   // works
$("input[name='temps[0]']").prop("checked", true);  // doesn't work

是否有一种解决方法,以便我不必在循环生成复选框内麻烦它,或者我无法在没有它的情况下执行此操作给第一个复选框一个id?

$("#firstBox").prop("checked", true) 

4 个答案:

答案 0 :(得分:2)

您可以使用.eq(index ):eq(index )获取指定索引处的元素,然后可以执行所需的操作

$("input[name='temps[]']").eq(index).prop("checked", true); 

或,

$("input[name='temps[]']:eq(" + index + ")").prop("checked", true); 

您还可以使用:first selector获取第一个匹配的DOM元素

$("input[name='temps[]:first']").prop("checked", true);

答案 1 :(得分:1)

查看您的HTML源代码。元素名称为temps[],而不是temps[0]。这就是为什么第二个选择器不起作用的原因。

要先选择,请使用.eq(0)

$("input[name='temps[]']")
    .removeAttr("checked")
    .eq(0)
    .addClass('checked')
    .prop('checked', true)
;

答案 2 :(得分:1)

您可以使用eq()函数从jQuery列表中按编号提取项目。这将创建一个仅包含该项的派生列表,然后您可以照常进行:

$("input[name='temps[]']").eq(0).prop("checked", true);

答案 3 :(得分:1)

$("input[name='temps[]']")[0].prop("checked", true);

或者

$("input[name='temps[]:first']").prop("checked", true);