如何使用值设置一组复选框?

时间:2014-09-30 17:47:58

标签: javascript jquery checkbox jquery-selectors

所以我有一组复选框,例如:

<input type="checkbox" id="cbl1" name="cbl" value="1" />
<input type="checkbox" id="cbl2" name="cbl" value="2" />
<input type="checkbox" id="cbl3" name="cbl" value="3" />
<input type="checkbox" id="cbl4" name="cbl" value="4" />
<input type="checkbox" id="cbl5" name="cbl" value="5" />
<input type="checkbox" id="cbl6" name="cbl" value="6" />
<input type="checkbox" id="cbl7" name="cbl" value="7" />
<input type="checkbox" id="cbl8" name="cbl" value="8" />

现在我有一系列值:

var values = ["2", "4", "7", "8"];

现在,我如何最终得到一组复选框:

<input type="checkbox" id="cbl1" name="cbl" value="1" />
<input type="checkbox" id="cbl2" name="cbl" value="2" checked="checked" />
<input type="checkbox" id="cbl3" name="cbl" value="3" />
<input type="checkbox" id="cbl4" name="cbl" value="4" checked="checked" />
<input type="checkbox" id="cbl5" name="cbl" value="5" />
<input type="checkbox" id="cbl6" name="cbl" value="6" />
<input type="checkbox" id="cbl7" name="cbl" value="7" checked="checked" />
<input type="checkbox" id="cbl8" name="cbl" value="8" checked="checked" />

我是否必须使用两个for循环才能执行此操作?在普通的javascript或jquery中是否有一种方法不需要循环两次?

2 个答案:

答案 0 :(得分:2)

从数组中创建一个选择器,并将它们全部检查

$( '#cbl' + values.join(', #cbl') ).prop('checked', true);

FIDDLE

这是使用ID,因为这是选择元素而不是值的更好方法,如果你仍想使用这些值,你可以使用相同的概念

$( '[value="' + values.join('"], [value="') + '"]').prop('checked', true);

FIDDLE

或者您可以过滤

$('input[type="checkbox"]').filter(function() {
    return $.inArray(this.value, values) != -1;
}).prop('checked', true);

答案 1 :(得分:2)

API docs demo

var values = ["2", "4", "7", "8"];

$('input[name="cbl"]').val(values)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="cbl1" name="cbl" value="1" />
<input type="checkbox" id="cbl2" name="cbl" value="2" />
<input type="checkbox" id="cbl3" name="cbl" value="3" />
<input type="checkbox" id="cbl4" name="cbl" value="4" />
<input type="checkbox" id="cbl5" name="cbl" value="5" />
<input type="checkbox" id="cbl6" name="cbl" value="6" />
<input type="checkbox" id="cbl7" name="cbl" value="7" />
<input type="checkbox" id="cbl8" name="cbl" value="8" />