14

我有一个类似的数组

var values = ['1','3','4','5'];

我有复选框列表

<div id='list'>
    <input type='checkbox' value='1' />
    <input type='checkbox' value='2' />
    <input type='checkbox' value='3' />
    <input type='checkbox' value='4' />
    <input type='checkbox' value='5' />
    <input type='checkbox' value='6' />
    <input type='checkbox' value='7' />
    <input type='checkbox' value='8' />
    <input type='checkbox' value='9' />
    <input type='checkbox' value='10' />
</div>

现在我想选择其值位于数组值内的复选框。我已经做到了

for(var i = 0; i < values.length; i++)
    $("#list [value=" + values[i] + "]").attr("checked", "checked");

它工作正常,但我可以在没有 for 循环的情况下做到这一点。

提前感谢帮助者。

4

4 回答 4

26

尝试

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

演示:小提琴

于 2013-09-04T13:15:59.297 回答
9

您可以使用单个组合选择器更简洁地执行此操作:

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

这会产生一个选择器,如:

$('#list [value="1"],[value="3"],[value="4"],[value="5"]')

http://jsfiddle.net/mblase75/jgqm4/

于 2013-09-04T13:11:31.480 回答
2

您可以filter像下面这样使用,但它与for循环相同..

$('#list :checkbox').filter(function () {
    return $.inArray(this.value, values) >= 0;
}).prop('checked', true);
于 2013-09-04T13:11:20.087 回答
1

您可以用 $.each 替换您的 for 循环

jQuery

$.each(values, function() {
  $("#list [value=" + this + "]").attr("checked", "checked");
});
于 2013-09-04T13:12:33.710 回答