zTree实现下拉框中的树形图

5 篇文章 0 订阅

实例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="../frames/zTree_v3/css/zTreeStyle/zTreeStyle.css"/>
<style>
    #departmentTreeDiv{
        display:none;
        background-color: white;
        position:absolute;
        z-index:9999;
        border: 1px solid #DDDDDD;
        margin-top:5px;
        height: 240px;
        width: 170px;
        overflow-y: auto;
    }
    #departmentTreeDiv::-webkit-scrollbar {
        width: 5px;
        height: 5px;
        background-color: transparent;
    }

    #departmentTreeDiv::-webkit-scrollbar-thumb {
        background: transparent;
    }

    #departmentTreeDiv:hover::-webkit-scrollbar-thumb {
        background: #9bcaff;
        border-radius: 10px;
    }
</style>
</head>
<body>
<div>
    <div id="ztreeSelect">
        <input type="text" name="department_name" id="department_name" lay-verify="title" autocomplete="off"
               class="layui-input"
               value="" readonly="readonly" onclick="initTree()"/>
        <input type="text" name="department_id" id="department_id" value="" class="layui-input"
               style="display:none;"/>
        <!--同步获取下拉框选中的名称和id-->
        <div id="departmentTreeDiv">
            <ul id="treeDemo" class="ztree"></ul>
        </div>
    </div>
</div>
</body>
<script src="../frames/jquery-1.11.1.min.js"></script>
<script src="../frames/zTree_v3/js/jquery.ztree.all.js"></script>
<script type="text/javascript">
    /*默认下拉框选中*/
    function menuform(treeDivId, inputHideId) {
        var id= $("#department_id").val();
        var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
        var node = treeObj.getNodeByParam("id", id, null); //根据新的id找到新添加的节点
        treeObj.selectNode(node); //让新添加的节点处于选中状态
        /*点击隐藏下拉框弹出层*/
        $(document).bind("click", function (e) {
            var target = $(e.target);
            if (target.closest("#ztreeSelect").length == 0) {
                $("#" + treeDivId).hide();
            }
        })
    }
    /*下拉框ztree树状图显示和点击事件*/
    function treeDiv(treeId, treeDivId, inputId, inputHideId, treeNodes, data,selectclick) {
        var setting = {
            view: {
                selectedMulti: false,
                showLine: false,
                showIcon: true,
                expandSpeed: ""
            },
            data: {
                simpleData: {
                    enable: true
                }
            },
            async: {
                enable: true
            },
            callback: {
                onClick: zTreeOnClick  /*单击事件查询菜单-liuyuru*/
            }
        };
        $.fn.zTree.init($("#treeDemo"), setting, treeNodes);
        var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
        treeObj.expandAll(true); //打开节点
        selectclick;
        function zTreeOnClick(event, treeId, treeNode) {
            $("#" + treeDivId).css("display", "none");
            $("#" + inputId).val(treeNode.name);
            $("#" + inputHideId).val(treeNode.id);
            selectclick();
        }
        $("#" + treeDivId).toggle(); //css切换
        menuform(treeDivId, inputHideId);
    }
    var dataArr=[{id:1,name:'测试1',pId:0},
        {id:2,name:'测试2',pId:1},
        {id:3,name:'测试3',pId:0}];
        //可获取后台数据
    function initTree() {
        var treeNodes = [];
        /*ztree树状图的数据结构-liuyuru*/
        treeNodes[0] = {};
        treeNodes[0]['id'] = "";
        treeNodes[0]['name'] = "全部";
        treeNodes[0]['pId'] = "";
        for (var key in dataArr) {
            var numkey=parseInt(key)+1;
            treeNodes[numkey] = {};
            treeNodes[numkey]['id'] = dataArr[key].id;
            treeNodes[numkey]['name'] = dataArr[key].name;
            treeNodes[numkey]['pId'] = dataArr[key].pId;
        }
        treeDiv("departmentTree", "departmentTreeDiv", "department_name", "department_id", treeNodes, dataArr,function selectclick(){
            return false;
        });
    }
</script>
</html>

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,我理解您的问题是想要使用Java和ztree实现两棵树之间的相互移动。 首先,您需要引入ztree的 JavaScript 和 CSS 文件。 然后,您需要在页面创建两个 ztree,分别表示两棵树。可以通过 AJAX 加载树节点数据,也可以在页面直接定义节点数据。 接着,您需要为两个 ztree 绑定拖拽事件。在拖拽结束后,通过获取被拖拽节点的信息,将节点从一棵树移除,并添加到另一棵树。 以下是一个简单的示例代码: ```javascript // 定义 ztree 的配置 var setting = { view: { dblClickExpand: false }, data: { key: { name: "nodeName" }, simpleData: { enable: true, idKey: "nodeId", pIdKey: "parentNode", rootPId: null } }, callback: { onDrop: function(event, treeId, treeNodes, targetNode, moveType) { // 获取被拖拽节点的信息 var node = treeNodes[0]; var nodeId = node.nodeId; var nodeName = node.nodeName; var parentNode = node.parentNode; // 将节点从一棵树移除 var treeObj = $.fn.zTree.getZTreeObj(treeId); treeObj.removeNode(node); // 添加节点到另一棵树 var targetTreeObj = $.fn.zTree.getZTreeObj(targetNode.treeId); var targetNodeObj = targetTreeObj.getNodeByTId(targetNode.tId); targetTreeObj.addNodes(targetNodeObj, { nodeId: nodeId, nodeName: nodeName, parentNode: targetNodeObj.nodeId }); } } }; // 创建两个 ztree var tree1Nodes = [ {nodeId: 1, nodeName: "节点1", parentNode: null}, {nodeId: 2, nodeName: "节点2", parentNode: 1}, {nodeId: 3, nodeName: "节点3", parentNode: 1} ]; var tree2Nodes = [ {nodeId: 4, nodeName: "节点4", parentNode: null}, {nodeId: 5, nodeName: "节点5", parentNode: 4}, {nodeId: 6, nodeName: "节点6", parentNode: 4} ]; $.fn.zTree.init($("#tree1"), setting, tree1Nodes); $.fn.zTree.init($("#tree2"), setting, tree2Nodes); ``` 在上面的示例代码,我们定义了一个名为 `setting` 的 ztree 配置对象,并将其应用到两个 ztree 上。在 `onDrop` 回调函数,我们获取被拖拽节点的信息,并将其移动到目标树。 希望这个示例可以帮助到您。如果您有任何问题,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值