检查基于Array的复选框 - jQuery

时间:2013-05-03 21:16:16

标签: javascript jquery arrays checkbox

我有一个独特的复选框模式窗口

<div class="tv-choices" style="display:none;"><!-- turned on via button-->
<div class="choices-title">TV</div>
<div class="choices-checkboxes">
    <div class="category_box">
        <input type="checkbox" id="getf{038}" name="getfItem" value="Adult Animated">
        <label for="get{038}">Adult Animated</label>
    </div>

    <div class="category_box">
        <input type="checkbox" id="getf{9FA}" name="getfItem" value="Anime">
        <label for="get{9FA}">Anime</label>
    </div>

    <div class="category_box">
        <input type="checkbox" id="getf{821}" name="getfItem" value="Award Shows">
        <label for="get{821}">Award Shows</label>
    </div>
</div>

现在我有了一个多维数组:

object_with_arrays['genreAry'+ary_Num]

假设数组object_with_arrays[genreAry1]包含:成人动画动漫,但奖励显示您现在如何通过jQuery检查这些复选框?

项目故事: 我有9个生成的按钮,可以动态创建一个模态窗口,每个模态窗口都提供一组复选框。由于我使用1个模态窗口,我必须清除透明复选框。我发现下面的代码有效,但我似乎无法弄清楚如何使用我的数组重新填充复选框

$('.tv-choices').find(':checked').each(function() {
        $(this).removeAttr('checked');
    });

2 个答案:

答案 0 :(得分:2)

$('.modal').find('input[type="checkbox"]').each(function() {
   var state = $.inArray(this.value, object_with_arrays['genreAry1'])!=-1;

   $(this).prop('checked', state);
});

迭代复选框,并根据数组中是否存在复选框值来设置checked属性?

答案 1 :(得分:2)

您可以使用jQuery过滤属性。如果你只是在寻找一个项目,那就是这样的:

$('.modal').find('input:checkbox[value="Anime"]').each(function() {
   $(this).prop('checked', true);
});

但是,既然你想检查一个值列表,你可以使用filter进行回调:

var searchValues = object_with_arrays['genreAry'+ary_Num]; 
//e.g. searchValues == ["Anime", "Adult Animated"]

$('.modal').find('input:checkbox').filter(function() {
   return searchValues.indexOf($(this).val()) >= 0;
}).each(function() {
   $(this).prop('checked', true);
});

如果您还想取消选中所有其他复选框:

$('.modal').find('input:checkbox').each(function() {
   var checked = searchValues.indexOf($(this).val()) >= 0;
   $(this).prop('checked', checked)
});