0

代码:

<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>

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

4

5 回答 5

0

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

并且$.inArray返回位置,所以让它 > -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/

于 2012-12-21T16:54:07.580 回答
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');

工作示例

于 2012-12-21T17:18:50.283 回答
0

问题是您没有使用if语句:

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

应该

if (-1 !== $.inArray($(this).attr('lid'), arr)){
    $(this).attr('checked','checked')
}
于 2012-12-21T16:51:45.843 回答
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 来设置元素的选中属性

$(this).prop('checked',true)
于 2012-12-21T16:52:10.043 回答
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);
}

检查小提琴

于 2012-12-21T16:57:56.023 回答