ztree项目中实战

废话不多说,直接贴核心代码:


<style type="text/css">
    ul.ztree {
        margin-top: 10px;
        border: 1px solid #617775;
        background: #f0f6e4;
        width: 220px;
        height: 360px;
        overflow-y: scroll;
        overflow-x: auto;
    }
</style>
<div>
      <div>
        <ul class="list">
            <li class="title">&nbsp;&nbsp;道路: <input id="roadSel" type="text" readonly value="" style="width: 350px;" onclick="showRoad();" />
        </ul>
    </div>
    <div id="roadTreeContent" class="menuContent" style="display: none; position: absolute;background: #f9f9f9;z-index: 10">
        <ul id="roadTree" class="ztree" style="margin-top: 0; width: 300px; height: 300px;"></ul>
    </div>

    
</div>

<script>
    var setting = {
        async: {
            enable: true,
            url: "${adminPath}/roadInfo/getRoadInfoList",
            autoParam: ["id"],
            type:"GET",
            dataType: "JSON",
            dataFilter : function(treeId, parentNode, childNodes) {
                for (var i=0; i<childNodes.length; i++) {
                    if(childNodes[i].pId=="0" || childNodes[i].pId=="1"){
                        childNodes[i].isParent = true;
                    }else{
                        childNodes[i].isParent = false;
                    }
                }
                return childNodes;
            }
        },
        check: {
            enable: true,
            chkboxType: { "Y" : "ps", "N" : "ps" }
        },
        view: {
            dblClickExpand: false
        },
        data: {
            simpleData: {
                enable: true
            }
        },
        callback: {
            beforeClick: beforeClick,
            onCheck: onCheck
        }
    };

    $(document).ready(function(){

        $.fn.zTree.init($("#roadTree"), setting);
    });


    function beforeClick(treeId, treeNode) {
        var zTree = $.fn.zTree.getZTreeObj("roadTree");
        zTree.checkNode(treeNode, !treeNode.checked, null, true);
        return false;
    }

    function onCheck(e, treeId, treeNode) {
        var zTree = $.fn.zTree.getZTreeObj("roadTree"),
            nodes = zTree.getCheckedNodes(true),
            v = "";
        for (var i=0, l=nodes.length; i<l; i++) {
            v += nodes[i].name + ",";
        }
        if (v.length > 0 ) v = v.substring(0, v.length-1);
        var cityObj = $("#roadSel");
        cityObj.attr("value", v);
    }

    function showRoad() {
        var cityOffset = $("#roadSel").offset();
        $("#roadTreeContent").css({left:cityOffset.left/1.35 + "px", top:cityOffset.top/  + "px"}).slideDown("fast");

        $("body").bind("mousedown", onBodyDown);
    }
    function hideTree() {
        $("#roadTreeContent").fadeOut("fast");
        $("body").unbind("mousedown", onBodyDown);
    }
    function onBodyDown(event) {
        if (!(event.target.id == "menuBtn" || event.target.id == "roadSel" || event.target.id == "roadTreeContent" || $(event.target).parents("#roadTreeContent").length>0)) {
            hideTree();
        }
    }


   
</script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZTree是一个基于jQuery的树形结构插件,可以用于显示树形菜单、目录结构等。在Vue项目使用ZTree,需要先安装ZTree插件,然后在Vue组件引入和使用。 步骤如下: 1. 在Vue项目安装ZTree插件: ``` npm install jquery ztree --save ``` 2. 在Vue组件引入jQuery和ZTree插件: ```javascript import $ from 'jquery' import 'ztree/js/jquery.ztree.all.min.js' import 'ztree/css/metroStyle/metroStyle.css' ``` 其,`jquery.ztree.all.min.js`是ZTree的核心文件,`metroStyle.css`是一款ZTree的皮肤。 3. 在Vue组件定义一个div元素,用于显示ZTree: ```html <template> <div id="tree"></div> </template> ``` 4. 在Vue组件的`mounted`钩子函数,初始化ZTree,并将数据渲染到树形菜单: ```javascript mounted() { // 初始化ZTree let setting = { view: { selectedMulti: false }, data: { simpleData: { enable: true } }, callback: { onClick: this.onClick } } let zNodes = [ { id:1, pId:0, name:"父节点 1", open:true}, { id:11, pId:1, name:"子节点 1-1"}, { id:12, pId:1, name:"子节点 1-2"}, { id:13, pId:1, name:"子节点 1-3"}, { id:2, pId:0, name:"父节点 2", open:true}, { id:21, pId:2, name:"子节点 2-1"}, { id:22, pId:2, name:"子节点 2-2"}, { id:23, pId:2, name:"子节点 2-3"}, { id:3, pId:0, name:"父节点 3", open:true}, { id:31, pId:3, name:"子节点 3-1"}, { id:32, pId:3, name:"子节点 3-2"}, { id:33, pId:3, name:"子节点 3-3"} ] $.fn.zTree.init($("#tree"), setting, zNodes) }, methods: { // 点击节点事件 onClick(event, treeId, treeNode) { console.log(treeNode.name) } } ``` 其,`zNodes`变量是一个数组,用于存储树形菜单的数据。`setting`变量是一个对象,用于配置ZTree的属性,例如是否允许多选、数据格式等。`$.fn.zTree.init`方法用于初始化ZTree,其`$("#tree")`表示树形菜单的容器元素,`setting`表示ZTree的配置,`zNodes`表示树形菜单的数据。 5. 最终效果如下图所示: <img src="https://i.loli.net/2022/01/08/aJZ9zVX8q3WOhlY.png" alt="ztree-demo.png" style="zoom:50%;" />

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值