遍历页面上的复选框并检查其ID是否在数组中

时间:2013-11-29 20:49:34

标签: jquery html

如果#id位于数组中,我正在尝试勾选一个复选框。

这是我到目前为止所拥有的:

<tr>
<td colspan="2">
<input type="checkbox" name="chkGroup" id="1" value="1"/>
&nbsp;&nbsp;
Administrator
</td>
</tr>

<tr>
<td colspan="2">
<input type="checkbox" name="chkGroup" id="2" value="2"/>
&nbsp;&nbsp;
Responder
</td>
</tr>

<tr>
<td colspan="2">
<input type="checkbox" name="chkGroup" id="3" value="3"/>
&nbsp;&nbsp;
Specialist
</td>
</tr>

var arr = [ 1, 3 ];
var arrGroup = jQuery.makeArray( arr );
$('input[name=chkGroup]').each(function (index, value) {
  if(jQuery.inArray($(value).attr('id'), arrGroup) !== -1) {
    $(value).prop('checked', true);
  }
  else {
    alert($(value).attr('id'));
  }
});

它不会打勾。它只击中了其他人。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

  1. 没有数字ID - 仅适用于html5
  2. 遍历数组而不是复选框
  3. 喜欢这个

    var arr = ["c1", "c3" ];
    
    $.each(arr,function (index, value) {
      $("#"+value).prop('checked', true);
    });
    

答案 1 :(得分:1)

或者你可以试试这个

var arr = [ 1, 3 ];

$("#"+arr.join(",#")).prop("checked", true);

http://jsfiddle.net/tarabyte/J4HY6/

答案 2 :(得分:0)

jQuery的inArray使用严格的相等性检查(===)。返回的ID值是一个字符串;而你正在寻找它的数值。

使用parseInt(和value.id;仅使用jQuery来获取ID属性:

if(jQuery.inArray(parseInt(value.id, 10), arrGroup) !== -1)

<强> jsFiddle here.

请注意,使用数字ID并不是一个好主意;虽然在HTML5中有效,但它们在CSS中无效并且可能会导致其他问题。