${productList}后台传过来的产品集合,遍历集合会生成多个name属性为checkbox的input
<div class="row"> <div class="form-group"> <div class="col-md-12"> <label class="col-lg-2 control-label">产品:</label> <input id="selecteAll" type="checkbox" class="styled"/>全选/反选 <div class="col-lg-12"> <div class="row"> <c:forEach items="${productList}" var="obj"> <div class="col-md-2"> <div class="checkbox"> <label> <input id="${obj.id }" name="product" type="checkbox" class="styled">${obj.name } </label> </div> </div> </c:forEach> </div> </div> </div> </div> </div>js代码:给生成的多个checkbox添加checked属性(相信这个肯定没有问题),但是添加属性之后其他的checkbox没有变化,其实这个属性已经添加上去,只是bootstrap控件没有改变属性(就是通过当前节点获取父节点,添加一个class属性,这个父节点是一个span标签,在浏览器中可以看到) $("#selecteAll").click(function(){ if(this.checked){ var products = $("input[name='product']"); products.each(function(){ $(this).attr('checked',true); $(this).parent().attr("class",'checked'); }); }else{ var products = $("input[name='product']"); products.each(function(){ $(this).attr('checked',false); $(this).parent().removeClass('checked'); }); } });获取输出值的时候会出现问题,会输出所有值,下面是输出值的控制
$("#button").click(function(){ var products; var j = 0; $("input[name='product']").each(function(){ var ischecked = $(this).parent().parent().find("span").attr("class"); if(j == 0 && ischecked=="checked"){ productTypes = $(this).val(); j++; }else if(j != 0 && ischecked=="checked"){ productTypes += "," +($(this).val()); j++; } }); });