三层结构复选框勾选控制

本文介绍如何利用jQuery-1.7.1.min.js实现三层结构的复选框之间的勾选控制,详细阐述了相关逻辑和实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


demo引入jquery版本号为jquery-1.7.1.min.js

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style type="text/css">
        html,body,p,ul,li,h1,h2,h3,h4,img,dl,dt,dd,ol{
            padding: 0;
            margin: 0;
            border: none;
        }
        body{
            font-family: Helvetica, Tahoma, Arial,  "Microsoft YaHei", "微软雅黑", SimSun, "宋体", Heiti, "黑体", sans-serif;
            font-size: 12px;
            color: #333333;
        }

        /*checkBox*/
        label {
            display: inline-block;
            vertical-align: middle;
        }
        h1{font-size: 18px;margin-bottom: 10px;}
        .checkBox{margin: 20px 0 0 50px;}
        .checkBox .all-top{margin-bottom: 5px;color: #58a200;font-weight: bold;}
        .checkBox dl{
            margin-bottom: 6px;
            border-bottom: 1px dotted #ccc;
            margin-left: 20px;
        }
        .checkBox dl dt{
            font-weight: bold;
            color:#D58C00;
        }
        .checkBox dl dd{
            line-height: 14px; padding: 4px 0 4px 16px;
        }
        .checkBox dd span{
            display: inline-block;
            *display: inline;
            width: 200px;
            zoom:1;
            font-weight: bold;
            margin-bottom: 6px;
        }
        .checkBox dd label{font-weight: normal;cursor: pointer;}
        .checkBox dd p label{margin-bottom:2px;}
        .checkBox input[type="checkbox"]{
            margin: -2px 4px 1px 0;
            vertical-align:middle; 
        }
    </style>
</head>
<body>
   <div id="Role_menu_c" >
        <form  action="" method="post" >
            <div class="checkBox">
                <h1>内容一</h1>
                <label class="all-top"><input type="checkbox">全选</label>
                <dl>
                    <dt>
                        <label><input type="checkbox" />标题1</label> 
                    </dt>
                    <dd>
                        <span>
                            <p>属性1</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性2</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性3</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性4</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                    </dd>
                </dl> 
                <dl>
                    <dt>
                        <label><input type="checkbox" />标题2</label> 
                    </dt>
                    <dd>
                        <span>
                            <p>属性1</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性2</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性3</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性4</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性5</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性6</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                    </dd>
                </dl>  
                <dl>
                    <dt>
                        <label><input type="checkbox" />标题3</label> 
                    </dt>
                    <dd>
                        <span>
                            <p>属性1</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性2</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性3</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                    </dd>
                </dl>  
                <dl>
                    <dt>
                        <label><input type="checkbox" />标题4</label> 
                    </dt>
                    <dd>
                        <span>
                            <p>属性1</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                        <span>
                            <p>属性2</p>
                            <label><input type="checkbox" name="ckRead" />只读</label>
                            <label><input type="checkbox" name="ck" />维护</label>
                        </span>
                    </dd>
                </dl>  
            </div>
            
        </form>
    </div>

    <div id="Role_message_c" >
        <form  action="" method="post" >
            <div class="checkBox">
                <h1>内容二</h1>
                <label class="all-top"><input type="checkbox">全选</label>
                <dl>
                    <dt>
                        <label><input type="checkbox" />level1</label> 
                    </dt>
                    <dd>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description content description content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description content description content description content description content description content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description description description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description description description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description description description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description description description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                    </dd>
                </dl> 
                <dl>
                    <dt>
                        <label><input type="checkbox" />leve2</label> 
                    </dt>
                    <dd>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                    </dd>
                </dl>  
                <dl>
                    <dt>
                        <label><input type="checkbox" />level3</label> 
                    </dt>
                    <dd>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                    </dd>
                </dl>  
                <dl>
                    <dt>
                        <label><input type="checkbox" />level4</label> 
                    </dt>
                    <dd>
                        <p>
                            <label><input type="checkbox" name="ck" />content description</label>
                        </p>
                    </dd>
                </dl>   
            </div>
        </form>
    </div>
    <script type="text/javascript" src="http://code.hs-cn.com/jquery/jquery-1.7.1.min.js"></script>
    <script type="text/javascript">
        $(function(){
            roleCkAll();
        });
        function roleCkAll(){
            $("dt").find(":checkbox").bind('click',function(event){ //dt中的全选按钮
                event.stopPropagation();
                var itemChk = $(this).closest("dl").find("dd :checkbox").not(":disabled,:hidden"),
                    itemChkDefault = itemChk.not("[name=ckRead]");
                if(this.checked){
                    itemChk.filter("[name=ckRead]").attr("checked", false);
                    itemChkDefault.attr("checked", this.checked );
                }else{
                    itemChk.attr("checked", this.checked );
                }
                checkTop($(this).closest("dl"));
            });
            $("dd").find(":checkbox").bind('click',function(){
                var num = $(this).closest("dd").find("span").eq(0).find("label").length;
                num = num==0?1:num;
                $(this).parent().siblings("label").find(":checkbox").attr('checked',false);
                var $tmp=$(this).closest("dd").find(":checkbox").not(":disabled,:hidden");
                var len = $tmp.length/num;
                var checked = len==$tmp.filter(':checked').not(":disabled,:hidden").length;
                $(this).closest("dl").find("dt :checkbox").attr('checked',checked);
                checkTop($(this).closest("dl"));
            });
            $(".checkBox .all-top").find(":checkbox").bind('click',function(event){ //有三层结构时的第一个全选
                event.stopPropagation();
                var itemChk = $(this).parents(".checkBox").find("dl input:checkbox").not(":disabled,:hidden"),
                    itemChkDefault = itemChk.not("[name=ckRead]");
                if(this.checked){
                    itemChk.filter("[name=ckRead],[name=ck]").attr("checked", false);
                    itemChkDefault.attr("checked", this.checked );
                }else{
                    itemChk.attr("checked", this.checked );
                }
            });
            function checkTop(obj){
                var checkBox = obj.closest(".checkBox");
                var $tmp=checkBox.find("dt :checkbox").not(":disabled,:hidden,[name=ckRead]");
                var checked = $tmp.length==$tmp.filter(':checked').not(":disabled,:hidden").length;
                checkBox.find(".all-top :checkbox").attr('checked',checked);
            }
        }
    </script>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值