`

ztree的使用1----ztree初始化及右键菜单

阅读更多

1:引入样式及类库

<link rel="stylesheet"
       href="${ctx}/resources/ztree/css/zTreeStyle/zTreeStyle.css" type="text/css">
<!-- jquery ztree -->
<script src="${ctx}/resources/ztree/js/jquery.ztree.all-3.3.js"></script>

2:

<!-- 右键菜单的样式 -->

<style type="text/css">
div#rMenu {
    z-index: 4;
    position: absolute;//使用绝对定位
    width: 100px;
    visibility: hidden;
    top: 0;
    background-color: #555;
    padding: 1px;
}

div#rMenu ul {
    margin: 0px;
    padding: 0px;
}

div#rMenu ul li {
    font-size: 12px;
    line-height: 20px;
    margin: 0px;
    padding: 0px;
    cursor: pointer;
    list-style: none outside none;//取消样式
    background-color: #DFDFDF;
    border-bottom: 1px solid #fff;
    padding-left: 3px;
}

div#rMenu ul li:hover {
    background: #eee;
}
</style>

<body >
    <div id="rMenu">
        <ul>
            <li id="m_add" onclick="menuAddNode();">增加节点</li>
            <li id="m_edit" onclick="menuEditNode();">编辑节点</li>
            <li id="m_editFile" onclick="menuEditContentNode();">编辑内容</li>
            <li id="m_delete" onclick="menuDeleteNode();">删除节点</li>
        </ul>
    </div>
    <div class="" style="border-radius:5px;overflow:auto;">
        <ul id="treeDemo" class="ztree"></ul>
    </div>
</body>

3:渲染

<script>
    var setting = {
        async : {
            enable : true,//异步加载
            url : "${ctx}/main/getMenuTreeData.do", //调用请求
            autoParam : [ "id", "pid" ] //自动封装参数
        },
        callback : {
            onRightClick : OnRightClick,//右键事件
            onAsyncSuccess: onAsyncSuccess,//回调函数,在异步的时候,进行节点处理(有时间延迟的),后续章节处理
            onClick : menuShowNode
        }
    };
   
    function OnRightClick(event, treeId, treeNode) {
        if (treeNode) {
            var top = $(window).scrollTop();
       
            zTree.selectNode(treeNode);
            if (treeNode.getParentNode()) {
                var isParent = treeNode.isParent;
                if(isParent){//非叶子节点
                    showRMenu("firstNode", event.clientX, event.clientY+top);//处理位置,使用的是绝对位置
                }else{//叶子节点
                    showRMenu("secondNode", event.clientX, event.clientY+top);
                }
            } else {
                showRMenu("root", event.clientX, event.clientY+top);//根节点
            }
        }
    }

    function showRMenu(type, x, y) {
        $("#rMenu ul").show();
        if (type == "root") {
            $("#m_add").show();
            $("#m_edit").hide();
            $("#m_editFile").hide();
            $("#m_delete").hide();
        } else if(type == "firstNode"){
            $("#m_add").show();
            $("#m_edit").show();
            $("#m_editFile").hide();
            $("#m_delete").show();
        }else if(type == "secondNode"){
            $("#m_add").hide();
            $("#m_edit").show();
            $("#m_editFile").show();
            $("#m_delete").show();
        }
       
        rMenu.css({
            "top" : y + "px",
            "left" : x + "px",
            "visibility" : "visible"
        });

        //在当前页面绑定 鼠标事件
        $(document).bind("mousedown", onBodyMouseDown);
    }
   
    //事件触发 隐藏菜单
    function onBodyMouseDown(event) {
        if (!(event.target.id == "rMenu" || $(event.target).parents("#rMenu").length > 0)) {
            rMenu.css({
                "visibility" : "hidden"
            });
        }
    }
   
    //隐式 隐藏右键菜单
    function hideRMenu() {
        if(rMenu){
            rMenu.css({
                "visibility" : "hidden"
            });
        }
        //取消绑定
        $(document).unbind("mousedown", onBodyMouseDown);
    }
   
    //异步加载完成
    function onAsyncSuccess(event, treeId, treeNode, msg) {
       
    }
   
    //单击节点 显示节点
    function menuShowNode() {
        var node = zTree.getSelectedNodes()[0];
        if (node) {
            if(!node.isParent){
               
            }
        } else {
            alert("未找到节点");
        }
    }
   
   
    var rMenu;//右键菜单元素
   
    var zNodes = [{
        id : "0",
        name : "根节点",
        pId : "-1",
        url1 : "",
        icon : "${ctx}/images/menu_p.png",
        isParent : true   //是否是父节点,对象分组的时候,要进行设置
    }];

    $(document).ready(function() {
        zTree = $.fn.zTree.init($("#treeDemo"), setting, zNodes);
        rMenu = $("#rMenu");
       
        //展开根节点
        expandNodes(zTree.getNodes());
       
    });
   
   
    //右键菜单 添加节点
    function menuAddNode() {
        //隐藏菜单
        hideRMenu();
       
        var node = zTree.getSelectedNodes()[0];
        if (node) {
            pId = node.id;
        } else {
            alert("未找到节点");
        }
    }

    //右键菜单 编辑节点
    function menuEditNode() {
        hideRMenu();
        var node = zTree.getSelectedNodes()[0];
        if (node) {
           
        } else {
            alert("未找到节点");
        }
    }
   
    //右键菜单 内容节点
    function menuEditContentNode() {
        hideRMenu();
        var node = zTree.getSelectedNodes()[0];
        if (node) {
           
        } else {
            alert("未找到节点");
        }
    }
   
    //右键菜单删除节点
    function menuDeleteNode() {
        hideRMenu();
        var node = zTree.getSelectedNodes()[0];
        if (node) {
            //easyUI 消息框
            top.$.messager.confirm("删除节点下的所有信息","确定要删除此节点吗?", function (r) { 
                if (r) { 
                            var id = node.getParentNode().id;
                                        $.ajax({
                                            url : node.id,
                                            beforeSend:function(){
                                   
                                    },
                                            success : function(data) {
                                                var msg = "删除成功";
                                                if ($.trim(data) == "success") {
                                                    refreshNode(id);
                                                   
                                                    //location.href = "about:blank";
                                                } else {
                                                    msg = "删除失败";
                                                }
                                               
                                                top.$.messager.show({
                                                    showType:'fade',
                                                    showSpeed:2000,
                                                    msg:msg,
                                                    title:'删除操作',
                                                    timeout:1
                                                });
                                            }
                                        });
                            } 
                     }); 
            } else {
                alert("未找到节点");
            }
    }
   
   
        //焦点
    function focusNode(id) {
        var node = zTree.getNodeByParam("id", id, null);
        if (node) {
            zTree.selectNode(node);
        } else {
            setTimeout(function() {
                focusNode(id);
            }, 10);
        }

    }
   
    function expandNodes(nodes) {
        zTree.expandNode(nodes[0], true, false, false);
    }

    //刷新节点
    function refreshNode(id) {
        var node = zTree.getNodeByParam("id", id, null);
        if (node) {
            zTree.reAsyncChildNodes(node, "refresh");
        } else {
            setTimeout(function() {
                refreshNode(id);
            }, 10);
        }
    }

    //刷新父节点
    function refreshParentNode(id) {
        var node = zTree.getNodeByParam("id", id, null);
        var pNode = node.getParentNode();
        if (pNode) {
            refreshNode(pNode.id);
        } else {
            refreshNode("0");
        }
    }

    //为添加节点刷新
    function refreshForAddNode(id) {
        var node = zTree.getNodeByParam("id", id, null);
        zTree.addNodes(node, {
            id : "xx",
            name : "new node"
        });
        zTree.reAsyncChildNodes(node, "refresh");
    }
   
</script>

4::渲染数据页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ include file="/pages/public/TagLib.jsp"%>
[
    <c:forEach items="${baseClassList}" var="tree" varStatus="index">
    {
        id:"${tree.id}",
        name:"${tree.name}",
        pId:"${tree.parentId}",
        icon:"",
        isParent:<c:if test="${tree.isLeaf == '1'}">false</c:if><c:if test="${tree.isLeaf != '1'}">true</c:if>
    }
    <c:if test="${(index.index+1)!=fn:length(baseClassList)}">,</c:if>
</c:forEach>
]

分享到:
评论

相关推荐

    针对Ztree的右键弹出菜单(jquery.popupSmallMenu.js)

    2. 初始化ZTree:设置ZTree的数据源和配置,例如节点数据、事件监听等。 3. 配置右键菜单:定义菜单项,可以包括文本、图标、关联的操作函数等。 4. 绑定事件:通过ZTree提供的API,监听节点的右键点击事件,并调用`...

    ztree 右键菜单,html的静态的,js和css都有

    ZTree不仅支持基本的树形展示,还提供了丰富的功能扩展,比如右键菜单,这正是我们今天要讨论的重点。在这个压缩包中,你将找到实现ZTree右键菜单所需的HTML、JavaScript(JS)和CSS文件。 首先,我们来理解一下...

    zTree_v3-master.zip_zip_ztree

    1. **jQuery基础**:zTree是基于jQuery库构建的,因此理解jQuery的基本选择器、事件处理、DOM操作是使用zTree的前提。掌握jQuery可以简化JavaScript代码,提高开发效率。 2. **树形数据结构**:zTree的核心在于将...

    zTree_v3-master

    - **zTree API**:包括初始化、操作节点、获取节点信息、设置节点状态等方法,帮助开发者灵活控制树形结构。 - **配置参数**:如`setting`对象,包含数据、视图、回调、其他设置等,可以根据需求调整。 4. **...

    全网jquery.tree树形菜单打包下载(zTree&jquery-ui&treeview共四种)

    3. 使用JavaScript代码初始化树形菜单,根据插件文档进行配置。 4. 调整CSS样式以适应项目需求。 5. 利用插件提供的API进行事件监听和数据操作。 通过学习和掌握这些jQuery Tree插件,开发者可以提高前端开发效率,...

    ztree自定义搜索功能 -- 可递归无限层

    - 首先,初始化ZTree,配置搜索相关参数,如`searchObj`,其中可以包含自定义搜索函数。 - 其次,监听搜索框的输入事件,触发搜索功能。 - 在自定义搜索函数中,遍历所有节点,使用递归方式处理无限层级。 - 对...

    Bootstrap风格的zTree右键菜单

    通常会涉及到zTree的API函数,如`init.ztree`初始化zTree,`showMenu`显示右键菜单,`hideMenu`隐藏菜单等。 在实际应用中,zTree的右键菜单功能可以用于各种场景,如数据库管理、文件系统操作或任何需要树形结构并...

    jquery.zTree

    通过调用`$.fn.zTree.init()`方法,将数据绑定到对应的DOM元素上,初始化zTree实例。 4. **配置项**:zTree提供了一组丰富的配置项,如`view`, `data`, `edit`, `check`, `async`等,用于定制树的显示样式、数据源...

    亲测可用的zTree树菜单插件

    接着,在JavaScript中初始化zTree,通过配置对象设定各种参数。例如: ```html &lt;ul id="treeDemo" class="ztree"&gt; ``` ```javascript var setting = { view: { showLine: true, // 是否显示连接线 showIcon: ...

    JQuery zTree v3.5.rar

    3. **初始化设置**:根据需求配置zTree的参数,如是否启用多选、异步加载等。 4. **绑定元素**:选择一个HTML元素作为树的容器,并调用zTree的初始化方法。 5. **事件监听**:注册事件监听器,如点击节点、拖放等,...

    zTreeAPI、实例及样式

    - `init(treeId, setting)`: 初始化zTree,treeId是树容器的ID,setting是配置对象。 - `addNode()`: 添加新节点,有同步和异步两种方式。 - `removeNode()`: 删除指定节点。 - `selectNode()`: 选择或取消选择...

    jquery-zTree_v3

    3. 初始化配置:设置zTree的初始化参数,包括节点数据、显示样式、行为设置等。 4. 调用zTree方法:使用`$.fn.zTree.init()`方法启动zTree,并传入之前准备好的DOM元素和配置对象。 5. 交互处理:通过zTree提供的API...

    bootstrap-ztree3.zip

    在实际使用时,你需要在HTML中引入Bootstrap和ZTree的相关文件,然后通过JavaScript初始化ZTree,并根据需求配置相应的参数。例如,你可以设置节点的展开方式、是否启用复选框、节点点击事件等。ZTree的API文档是...

    ztree资源,及使用说明

    除了基本功能外,zTree还支持扩展功能,例如拖拽排序、右键菜单、搜索功能等,开发者可以根据需求灵活使用。 **6. 示例资源** 在提供的资源中,`jQuery树形控件zTree使用小结_jquery_脚本之家.html`可能是一个详细...

    ztree使用说明ztree.zip

    3. **事件不响应**:确保事件绑定在zTree初始化完成之后执行。 4. **节点图标不显示**:确认CSS文件引入无误,且节点的`icon`属性设置正确。 zTree的使用涵盖了诸多细节,以上仅是基础介绍。要深入掌握zTree,还...

    ztree树形菜单demo

    2. **初始化ZTree**:通过JavaScript调用`$.fn.zTree.init()`方法初始化ZTree,传入容器元素和配置对象。配置对象可以设置树的初始状态、节点的展开方式、异步加载等参数。 3. **节点显示**:ZTree会根据提供的JSON...

    zTree树jar包

    为了在项目中使用zTree,你需要将相应的JS和CSS文件引入到HTML页面中,然后初始化zTree并设置相关配置。通过调用提供的API,可以实现对树形结构的动态操作。同时,与后端数据接口配合,实现数据的动态加载和更新。 ...

    zTree 3.0 实例下载

    通过下载并研究`zTree_v3-master`中的示例,你可以了解到如何初始化zTree、如何设置节点数据、如何绑定事件、如何实现异步加载以及如何自定义样式等关键知识点。此外,还可以学习到如何通过JavaScript动态操作zTree...

    jquery ztree实现右键收藏功能

    在本文中,我们将深入探讨如何使用jQuery库中的ZTree插件来实现右键菜单的收藏功能。ZTree是一款强大的JavaScript树形控件,它提供了丰富的交互性和自定义配置,广泛应用于网页中的数据展示和管理。 首先,理解...

    zTree树菜单Demo

    - **初始化zTree**:调用`$.fn.zTree.init()`方法初始化树菜单。 4. **实例解析** - **中文实例**:可能包含基础的树结构展示、节点的点击事件处理、节点展开/折叠效果等,帮助初学者快速上手。 - **英文实例**...

Global site tag (gtag.js) - Google Analytics