企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
ztree是一个使用度很高的,功能很齐全的 javascript 树形菜单插件。今天我主要想给大家介绍的是他的 选择框 勾选功能。这个功能在我们做 权限 分配等,需要选择的功能时,很有用。 ![](https://box.kancloud.cn/450e1ea71e6eb469d942cec2d0e344f3_131x197.jpg) 首先到官网[http://www.treejs.cn/v3/main.php#\_zTreeInfo](http://www.treejs.cn/v3/main.php#_zTreeInfo),点击下载,也可以到 github[https://github.com/zTree/](https://github.com/zTree/)去下载。 下载完成之后,解压到项目的 static 中 ![](https://box.kancloud.cn/ba2257f223539e122da42c48c78d74d3_359x338.jpg) ztree所需要的格式很简单,只需要将数据按照如下的格式组织: ~~~ [ { id:1, pId:0, name:"随意勾选 1", open:true}, { id:11, pId:1, name:"随意勾选 1-1", open:true}, { id:111, pId:11, name:"随意勾选 1-1-1"}, { id:112, pId:11, name:"随意勾选 1-1-2"}, { id:12, pId:1, name:"随意勾选 1-2", open:true}, { id:121, pId:12, name:"随意勾选 1-2-1"}, { id:122, pId:12, name:"随意勾选 1-2-2"}, { id:2, pId:0, name:"随意勾选 2", checked:true, open:true}, { id:21, pId:2, name:"随意勾选 2-1"}, { id:22, pId:2, name:"随意勾选 2-2", open:true}, { id:221, pId:22, name:"随意勾选 2-2-1", checked:true}, { id:222, pId:22, name:"随意勾选 2-2-2"}, { id:23, pId:2, name:"随意勾选 2-3"} ]; ~~~ 主要的数据 是 id,pId 和 name。 > 请注意大小写,严格区分。 **open**:是用来控制 树的菜单是否展开,如果是 true 默认展开,否则会收起。 **checked**: 控制该节点可选或者不可选 新建 application\\index\\controller\\Ztree.php ~~~ <?php namespace app\index\controller; use think\Controller; class Ztree extends Controller { // ztree 的基本操作 public function index() { $area = db('area')->field('id,name,pid as pId')->select(); $this->assign([ 'zNodes' => json_encode($area) ]); return $this->fetch(); } } ~~~ 我们将准备好的数据,渲染到前台就可以了,不需要我们像使用 laytree 那样自己去组织好数据格式。这一点很是方便。 新建 application\\index\\view\\ztree\\index.html ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ztree编辑选择</title> <link href="/static/zTree/zTreeStyle.css" rel="stylesheet"> <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="zTreeDemoBackground left" id="role"> <input type="hidden" id="nodeid"> <div class="form-group"> <div class="col-sm-5 col-sm-offset-2"> <ul id="treeType" class="ztree"></ul> </div> </div> <div class="form-group"> <div class="col-sm-4 col-sm-offset-4" style="margin-bottom: 15px"> <input type="button" value="确认分配" class="btn btn-primary" id="postform"/> </div> </div> </div> <script src="/static/js/jquery.min.js?v=2.1.4"></script> <script src="/static/bootstrap/js/bootstrap.min.js"></script> <script src="/static/zTree/jquery.ztree.core-3.5.js"></script> <script src="/static/zTree/jquery.ztree.excheck-3.5.js"></script> <script src="/static/zTree/jquery.ztree.exedit-3.5.js"></script> <script> //设置zetree var setting = { check:{ enable:true }, data: { simpleData: { enable: true } } }; var zNodes = {$zNodes}; $(function(){ $.fn.zTree.init($("#treeType"), setting, zNodes); var zTree = $.fn.zTree.getZTreeObj("treeType"); }); </script> </body> </html> ~~~ 访问[http://www.phper.com/index/ztree/index](http://www.phper.com/index/ztree/index)可见 ![](https://box.kancloud.cn/88a3d9aa82ed7d7e7353f20b7f69ae19_485x265.jpg) 数据渲染出来了,那勾选了哪个选项,我们该如何得知呢? ~~~ // 获取选中的节点 $("#postform").click(function(){ var zTree = $.fn.zTree.getZTreeObj("treeType"); var nodes = zTree.getCheckedNodes(true); var NodeString = ''; $.each(nodes, function (n, value) { if(n>0){ NodeString += ','; } NodeString += value.id; }); alert(NodeString); }) ~~~ 点击缺人分配,可以通过 ~~~ zTree.getCheckedNodes(true); ~~~ 得到选中节点的信息,组装一下选中节点的数据 ![](https://box.kancloud.cn/773af8af79c2e1e6d6968c3095fab5c4_929x283.jpg) 选中的 id 一目了然