zoukankan      html  css  js  c++  java
  • jsTree 隐藏父节点的复选框;只留最底一层的复选框

    参考的页面:遍历全树(推荐)遍历全树;设置图标;设置隐藏

    var idList = [];
    var jsonNodes = $('#tree').jstree(true).get_json('#', { flat: true });
    $.each(jsonNodes, function (i, val) {
        idList.push($(val).attr('id'));
    })

    手里有个项目是选择人员;需求是只选择人员;部门不需要被选择。(吐槽一万遍这个jsTree的文档真难用;有些方法都是搜的别人别的;尝试后才搞定的)

    首先,遍历全部子节点

    然后,判断这些子节点是否有子级,如果有,就隐藏其复选框,

    优化:给树设置自己的图标。

    附上源码:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <script src="js/jquery-1.9.1.min.js"></script>
     7     <script src=" dist/jstree.min.js "></script>
     8     <link rel="stylesheet" href=" dist/themes/default/style.min.css " />
     9     <link rel="stylesheet" href="dist/jsTree.css">
    10     <link rel="stylesheet" href="layui/css/layui.css">
    11     <style>
    12         .no_checkbox>i.jstree-checkbox{display:none}
    13         .layui-icon{color: #0dbba1;}
    14     </style>
    15 </head>
    16 <body style="padding: 40px;">
    17     <div id="MjsTree" style="400px;"></div>
    18 <script src="layui/layui.all.js"></script>
    19 <script>
    20     $(function () {
    21 
    22         let $tree = $('#MjsTree');
    23         $tree.jstree({
    24             "core":{
    25                 "data":{
    26                     "url" : 'json/data.json',
    27                     "dataType" : "json"
    28                 },
    29                 "themes" : {
    30                     "variant" : "large",//加大
    31                     "ellipsis" : true //文字多时省略
    32                 },
    33                 "check_callback" : true
    34             },
    35             "checkbox":{
    36                 "three_state": false,//父子不联动False
    37             },
    38             "plugins" : [ "checkbox","themes"]
    39         });
    40         let idList = [];//定义一个空数组放,全部数据的id
    41         $tree.bind('ready.jstree', function (event,data) {
    42            // debugger;
    43             let jsonNodes = $tree.jstree(true).get_json('#', { flat: true });
    44 
    45             $.each(jsonNodes, function (i, val) {
    46                 let node = $tree.jstree().get_node(this);//获取当前对象的json数据
    47                 let idn =node.id;
    48                 let lvl = node.parents.length;//属于第几级别;数字越大;级别越低
    49 
    50                 //判断是否有下级
    51                 if($tree.jstree(true).is_parent(node)){
    52                     $("#"+idn+"_anchor").find('i.jstree-checkbox').hide();//判断满足条件的id;找到i标签隐藏其复选框
    53                     $tree.jstree(true).set_icon(node,"layui-icon layui-icon-group");//设置图标
    54                 }else {
    55                     $tree.jstree(true).set_icon(node,"layui-icon layui-icon-friends");//设置图标
    56                 }
    57                 idList.push($(val).attr('id'));//获取的id属性给数组
    58             })
    59             console.log(idList);
    60         });
    61 
    62         //获取选中节点的数据
    63         $tree.on('select_node.jstree', function(event, data) {
    64            console.log(data.selected);
    65         });
    66 
    67     })
    68 
    69 </script>
    70 </body>
    71 </html>

    有人会问【.no_checkbox>i.jstree-checkbox{display:none}】这句样式没有用上呢?因为这是另外一种可以达到隐藏复选框效果的方法;

     因为这里用上了。

  • 相关阅读:
    代理模式
    建造者模式
    开源版本 hadoop-2.7.5 + apache-hive-2.1.1 + spark-2.3.0-bin-hadoop2.7整合使用
    Phoenix映射HBase数据表
    使用sqoop将mysql中表导入hive中报错
    数据库索引原理及优化(转载)
    6.JAVA知识点归纳整理
    5.hbase表新增数据同步之add_peer
    mongodb分布式集群搭建
    4.HBASE数据迁移方案(之snapshot):
  • 原文地址:https://www.cnblogs.com/moppet/p/14207734.html
Copyright © 2011-2022 走看看