2 u011954534 u011954534 于 2015.07.28 10:57 提问

jquery控制checkbox是否选中,第二次全选时没有作用。
    $(function(){
                var powerList = ${jsonStr};
                var actions = '${actions}';
                for(i=0;i<powerList.length;i++){
                    $("#"+powerList[i].pId).append("<input name='checkbox' type='checkbox' value='"+powerList[i].id+"' />"+powerList[i].name);
                    if(actions.indexOf(powerList[i].id) != -1){
                        $("input[value='"+powerList[i].id+"']").attr('checked',true);
                    }
                }
            });
            function checkAll(name){
                var check = $("input[name='"+name+"']").is(':checked');
                var children = $("#"+name).find('input[type=checkbox]');
                if(check){
                    children.attr("checked",true);
                }else{
                    children.attr("checked",false);
                }
            }
 <div class="div_main">
                <div class="div_title">系统管理</div>
                <div style="padding:10px">
                <table class="table_main">
                    <tr>
                        <td class="td_title" >组织架构
                         <input name="organization_manage" type="checkbox"  onchange="checkAll(name);" />
                        </td><td class="td_title"></td>
                    </tr>
                    <tr>
                        <td id="organization_manage"></td>
                    </tr>
                    <tr>
                        <td class="td_title">岗位授权</td><td class="td_title"></td>
                    </tr>
                    <tr></tr>
                </table>
                </div>
            </div>

界面
当我打开界面第一次点中全选时可以实现,再次点击也可以取消全选;可是当第二次点击全选时下面的复选框就不再显示被选中了,但是单击选择了下面的复选框后再点击全选是可以把下面的取消的,这是为什么啊,求解。

第一张图中 $(function(......))方法就是向下面id为organization_manage的“《td》”标签中加入几个checkbox标签

5个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.07.28 12:30
已采纳

js代码贴成图片,别人没法给你调试,另外把td下标签的代码结构也得贴出来

danielinbiti
danielinbiti 回复六月风止: 改成.prop("checked", true); .prop("checked", false); 最佳方式改成dom节点方式children.each(function(){ this.checked=true; })。因为checked是dom的属性,jquery用attr可能会失败。
2 年多之前 回复
u011954534
u011954534 好的
2 年多之前 回复
strutce
strutce   Ds   Rxr 2015.07.28 11:26

if (check){//当为true是要设置成false
children.attr("checked",false);
}else{
children.attr("checked",true);
}

u011954534
u011954534 check是‘组织架构’旁边的那个checkbox的状态,我用它来控制横线下面的checkbox的全选,状态应该保持一致啊,你这么设置一个也选不中了,请看第三张图
2 年多之前 回复
yuke198907
yuke198907   2015.07.28 13:00

checkAll的参数应该是checkbox吧

u011954534
u011954534 我传的不是checkbox啊
2 年多之前 回复
u011954534
u011954534   2015.07.28 16:06

谢谢各位,已经解决了。是j1.6以后追加属性最好用prop()不要再用attr()了

sina_2831808769
sina_2831808769   Rxr 2015.07.28 20:48

占个位置------

Csdn user default icon
上传中...
上传图片
插入图片