• 树checkbox选择jquery实例


    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <script src="http://my.csdn.net/assets2/js/libs/jquery-1.9.0.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function () {
                $("input[type='checkbox']").click(function () {
                    var myid = $(this).attr("id");
                    //alert(myid);
                    var isSel = $(this).is(":checked");
                    selectChkbox(0, myid, isSel);
                    selectParentChkbox($(this));
                });
            });
            //变更子节点
            function selectChkbox(n,parentid, isSel) {
                var len = $("input[type='checkbox']").length;
                for (var i = n; i < len; i++) {
                    var inp = $("input[type='checkbox']").eq(i);
                    var pid = inp.attr("data-parent");
                    if (parentid == pid) {
                        if (isSel) {
                            inp.prop("checked", true);
                        } else {
                            inp.prop("checked", false);
                        }
                        selectChkbox(i, inp.attr("id"), isSel);
                    }
                }
            }
            //变更父节点
            function selectParentChkbox(clickINP) {
                var parentid = clickINP.attr("data-parent");
                if (parentid != "null") {
                    if (!clickINP.is(":checked")) {
                        selectParentChkF(parentid);
                    } else {
                        selectParentChkT(parentid);
                    }
                }
    
            }
            function selectParentChkF(parentid) {
                $("#" + parentid).prop("checked", false);
                parentid = $("#" + parentid).attr("data-parent");
                if (parentid != "null")
                    selectParentChkF(parentid);
            }
            function selectParentChkT(parentid) {
                var parentSel = true;
                $("input[type='checkbox']").each(function () {
                    var pid = $(this).attr("data-parent");
                    if (parentid == pid) {
                        if (!$(this).is(":checked")) {
                            parentSel = false;
                        }
                    }
                });
                if (parentSel) {
                    $("#" + parentid).prop("checked", true);
                    parentid = $("#" + parentid).attr("data-parent");
                    if (parentid != "null")
                        selectParentChkT(parentid);
                } else {
                    selectParentChkF(parentid);
                }
            }
        </script>
    </head>
    
    <body>
     <div>
      <div>A<input id="A" data-parent="null" type="checkbox" /></div>
      <div style=" margin-left:16px;">B<input id="B" data-parent="A" type="checkbox" /></div>
      <div style=" margin-left:32px;">B-1<input id="B-1" data-parent="B" type="checkbox" /></div>
      <div style=" margin-left:32px;">B-2<input id="B-2" data-parent="B" type="checkbox" /></div>
      <div style=" margin-left:48px;">B-2-1<input id="B-2-1" data-parent="B-2" type="checkbox" /></div>
      <div style=" margin-left:48px;">B-2-2<input id="B-2-2" data-parent="B-2" type="checkbox" /></div>
      <div style=" margin-left:16px;">C<input id="C" data-parent="A" type="checkbox" /></div>
      <div style=" margin-left:32px;">D<input id="D" data-parent="C" type="checkbox" /></div>
      <div style=" margin-left:32px;">E<input id="E" data-parent="C" type="checkbox" /></div>
     </div>
    </body>
    </html>
    

  • 相关阅读:
    详解TCP三次握手
    Linux(Ubunt)使用日记------常用软件汇总(不定时更新)
    Linux(Ubuntu)使用日记------markdown文件与pdf,doc,docx文件的相互转化(pandoc使用)
    白板编程浅谈——Why, What, How
    深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
    我的算法学习之路
    redux的hook使用
    redux基础(添加中间件与异步)
    typescript书写规范
    用js手撕七种排序算法!!内附运行速度测试函数
  • 原文地址:https://www.cnblogs.com/letnet/p/8525111.html
Copyright © 2020-2023  润新知