树形图插件jstree

写在前面

最近赶项目,里面有这样的一个需求,从后台获取到json以后,将数据写成树的形式


pic.png

网上找了jstree插件

安装及使用

<link href="css/plugins/jsTree/style.min.css" rel="stylesheet">
<script src="js/plugins/jsTree/jstree.min.js"></script>

下载到本地,引入.没什么说的

初始化

//html
<div id="data-tree"></div>
//js
$.ajax({
    type:"get",
    url:"",
    async:true,
    success:function(data){
        if(data){
             var treeDataObj = formatTreeData(data.children);
             $('#data-tree').jstree(
                    {
                        'core': {
                            'data': treeDataObj
                        },
                        "plugins": ["search"]//添加搜索功能
                    }
                );
        }
    }
});

这些都没什么,主要是这个格式化数据弄的我脑阔疼,jstree的数据要求一般是这种格式

 'core' : {
      'data' : [
        { "text" : "Root node", "children" : [
            { "text" : "Child node 1" },
            { "text" : "Child node 2" }
          ]
        }
      ]
    }

请求到的数据不是这种格式,这时候需要修改,每一层都要加上text id等属性,这时候需要循环一下

        var formatTreeData = function (data) {
            var result = data instanceof Array ? [] : {};
            for (var i in data) {
                if (typeof data[i] == 'object') {
                    result[i] = formatTreeData(data[i]);
                } else {
                    result.id = data.classId;
                    result.text = data.className;
                    result.icon = 'fa fa-reorder';
                    result.type = 'Field';
                }
              }
           return result;
           }

还得需要判断最后一层,并且区分开有数据的(这个实在是不怎么会)

点击节点

  $('#data-tree').on('select_node.jstree', function (selected, selectedNode) {
       // selected:选中的标签
       //selectedNode:选中的标签存储的数据
  });

搜索功能

$("#data-tree").jstree(true).search($("#searchTreeInput").val());

暂时用到的就这些 其他的请移步https://blog.csdn.net/qq_24472595/article/details/70053863

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容