2

我一直在使用此代码来获取所有选中复选框的逗号分隔列表。

$(".hidFeedsIds").val($.map($(':checkbox[name=channel\[\]]:checked'), function (n, i) {
    return n.value;
}).join(','));

现在我需要做相反的事情,我有列表,但需要检查值所在的所有复选框。

谁能告诉我如何做到这一点?

4

3 回答 3

7

除了您的代码在语法上无效的事实之外......

$('input:checkbox').filter(function() {
    return valuesArray.indexOf(this.value) > -1
}).prop('checked', true);
于 2013-04-08T20:33:12.827 回答
4

另一种方式,补充@Matt的答案。

$.each(valuesArray, function (i, v) {

    // or use .prop() if you like, depending on jQuery version
    $("input:checkbox[value='" + v + "']").attr("checked", true);
});
于 2013-04-08T20:34:10.647 回答
1

LIVE DEMO

如果您的元素值共享相同的 ID,例如:

<input type="checkbox" id="a" value="a" />
<input type="checkbox" id="b" value="b" />

比你能做的:

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

function顺便说一句,您在原始脚本中丢失了。应该:

var valuesArray = $('input:checkbox:checked').map(function(){
    return $(this).val();
}).get().join();
于 2013-04-08T20:46:11.860 回答