代码:
<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>
我正在尝试检查所有与数组中项目具有相同“盖子”的复选框。 现在,我的功能,检查所有复选框。
答案 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');