bootsraps treeview选中子节点自动选中父节点及反选

1548年前 (2017-10-23)javaScript3556

效果图:

图片.png

  1. 引入外部JS及CSS文件:

    <link href="${root!}/resource/css/bootstrap.min.css" rel="stylesheet">

    <script src="${root!}/resource/js/jquery.min.js?v=2.1.4"></script>
    <script src="${root!}/resource/js/bootstrap.min.js?v=3.3.6"></script>

      <script src="${root!}/resource/js/plugins/treeview/bootstrap-treeview.js"></script>

2.html容器部分:

 <div id="treeview"></div>

3.JS加载数据:

$(function() {
     $(".btn").click(function(){
         var node = '';
        var nodes = $('#treeview').treeview('getSelected');
        for (var key in nodes) {
            //console.log(nodes[key].F_URI);
            node += nodes[key].F_URI + ',';
        }
        $("#role").val(node);
     });

    $.getJSON('${root!}/admin/auth/action/tree',
    function(data) {
        $("#treeview").treeview({
            data: data,
            selectedIcon: "fa fa-check-square-o",
            nodeIcon:"fa fa-square-o",
            uncheckedIcon:"fa fa-square-o",
            selectable: true,
            multiSelect: true ,  //是否多选
                   onNodeSelected: function (event,node) {
                        var selectNodes = getChildNodeIdArr(node); //获取所有子节点
                        if (selectNodes) { //子节点不为空,则选中所有子节点
                            $("#treeview").treeview('selectNode', [selectNodes, { silent: true }]);
                        }
           
                         setParentNodeCheck(node,'1');//自动选择父节点
                      },
                      onNodeUnselected: function (event, node) {
                        var selectNodes = getChildNodeIdArr(node); //获取所有子节点
                        if (selectNodes) { //子节点不为空,则选中所有子节点
                            $("#treeview").treeview('unselectNode', [selectNodes, { silent: true }]);
                        }
    
                     }
                   
        });

    });

});

      function getChildNodeIdArr(node) {
            var ts = [];
            if (node.nodes) {
                for (x in node.nodes) {
                    ts.push(node.nodes[x].nodeId);
                    if (node.nodes[x].nodes) {
                        var getNodeDieDai = getChildNodeIdArr(node.nodes[x]);
                        for (j in getNodeDieDai) {
                            ts.push(getNodeDieDai[j]);
                        }
                    }
                }
            } else {
                ts.push(node.nodeId);
            }
            return ts;
        }

      function setParentNodeCheck(node,type) {
             var parentNode = $("#treeview").treeview("getParent", node);
            if (parentNode.nodes) {
                if(type=='1'){
                        $("#treeview").treeview('selectNode', [ parentNode, { silent: true } ]);
                         setParentNodeCheck(parentNode,'1');
                }else{//没用
                         $("#treeview").treeview('unselectNode', [ parentNode, { silent: true } ]);
                         setParentNodeCheck(parentNode,'2');
                }
            }
        }

本文原创,转载必追究版权。

分享给朋友:

相关文章

如何彻底卸载删除oracle数据库

 windows下如何彻底删除Oracle 软件环境: 1、Windows 2000+ORACLE 8.1.7 ,oracle 10g2、ORACLE安装路径为:C:\ORACLE实现方...

目标管理法——目标分解法

让自己的人生更幸福更有意义关键是:要将梦想转化为具体的目标,然后合理的分解,达到量化,指标化!现将学习到的两种非常有效的目标分解法分享给所有梦想、有激情的朋友:祝愿大家都能梦想成真! 一、俄...

Java 实现用户资料完整度的前端显示(或根据填写资料自动评分)

前端使用 Bootstrap 的进度条组件显示百分比,后台读取权重并计算信息完整度,并将计算的结果返回给前端,供页面显示。CSS1<link href="static/sc/...

dwz+jfinal 市县下拉菜单二级联动(实例)

在DWZ文档中对组合框combox的是这样描述的:在传统的select 用class 定义:class=”combox”, html 扩展:保留原有属性name,  增加了属性:ref。re...

我差不多是个废人了,感觉身体被掏空

林心如跟霍建华都结婚了,滴滴跟优步都在一起了。我们也应该抱住了吧? 终于8月了,超吃点吧,再一咬牙,坚持一下吧,马上秋天到了,就可以又能马上把肥肉藏起来了。 在这里迫不及待教大家一个夏天过后...

js控制文本域textarea 剩余可填字符显示

Html部分:<span class="remo"><div>还可以输入<span style="font-family: Georgia;...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。