检查数组中变量的复选框

时间:2012-12-21 16:48:30

标签: jquery checkbox

代码:

<div>
    <input type='checkbox' lid='1'><label>checkbox1</label>
    <input type='checkbox' lid='2'><label>checkbox1</label>
    <input type='checkbox' lid='3'><label>checkbox1</label>
    <input type='checkbox' lid='4'><label>checkbox1</label>
</div>
<script type='text/javascript'>
    var arr = new Array("1", "2");
    $('input[type=checkbox]').each(function(){
        $.inArray($(this).attr('lid'), arr){
            $(this).attr('checked','checked')
        }
    });
</script>

我正在尝试检查所有与数组中项目具有相同“盖子”的复选框。 现在,我的功能,检查所有复选框。

5 个答案:

答案 0 :(得分:0)

问题是您没有使用if声明:

$.inArray($(this).attr('lid'), arr){
    $(this).attr('checked','checked')
}

应该是

if (-1 !== $.inArray($(this).attr('lid'), arr)){
    $(this).attr('checked','checked')
}

答案 1 :(得分:0)

$.inArray传回一个数字,其中-1未找到,所以你应该这样做

$('input[type=checkbox]').each(function(){
        var found = $.inArray($(this).attr('lid'), arr) > -1;
        if(found){
           $(this).attr('checked','checked')
        }
 });

如果使用jQuery 1.6+,您应该使用.prop()而不是.attr来设置元素的checked属性

$(this).prop('checked',true)

答案 2 :(得分:0)

您应该使用.prop()来检查复选框!

$.inArray返回位置,因此请将其设为&gt; -1

 var arr = ['1','2'];

 $('input[type=checkbox]').each(function(){
     var cb = $(this);

     if ($.inArray(cb.attr('lid'), arr) > -1) {
         cb.prop('checked', true);
     }
 });

http://jsfiddle.net/4kehu/

答案 3 :(得分:0)

为什么不使用简单的for循环

var arr = new Array("1", "2");

for(var i =0;i<arr.length;i++){
    var lid = arr[i];
    $('input[type="checkbox"][lid="'+ lid +'"]').prop('checked', true);
}

<强> Check Fiddle

答案 4 :(得分:0)

我建议您使用data-lid代替lid,即

<input type='checkbox' data-lid='1'><label>checkbox1</label>

并用于检查这些复选框

var arr = ["1", "2"];
var myCBoxes=$('input[type=checkbox]').get().filter(function(el){
    return $.inArray($(el).attr('data-lid'), arr)!=-1;
});
$(myCBoxes).prop('checked','checked');

Working Example