前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >jQuery的ztree仿windows文件新建和拖拽效果

jQuery的ztree仿windows文件新建和拖拽效果

作者头像
王小婷
发布于 2025-05-18 07:22:42
发布于 2025-05-18 07:22:42
11100
代码可运行
举报
文章被收录于专栏:编程微刊编程微刊
运行总次数:0
代码可运行

前面的话:zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。专门适合项目开发,尤其是 树状菜单、树状数据。

ztree官方文档:http://www.treejs.cn/v3/api.php

想要实现的效果:

5640239-6265f0af9e9966e4.gif
5640239-6265f0af9e9966e4.gif

需要的功能:

1:首先实现一颗jQuery的ztree的树形菜单,这个很简单,直接引用官方文档即可 2:点击新建组的按钮,会出现一个input对话框,填写想要新建的名称,在树形菜单上添加了一个父节点菜单。 3:可以把其他父节点里面的子节点元素拖动到刚刚新建的父节点里面。

下面开始撸代码:

1:首先要引入一些必要的文件,可自己在官方文档里面下载。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- 树形菜单 -->
<link rel="stylesheet"  href="../../common/ztree/css/zTreeStyle/zTreeStyle.css">
<script type="text/javascript" src="../../js/jquery-1.9.1.js" /></script>   
<script src="../../common/ztree/js/jquery.ztree.all.min.js"></script>

2:html界面,有新建组的按钮和盛放树形菜单的容器,还有填写文件名的input框以及提交按钮。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <div class="">
                           <div>
                                <button id="add">新建组</button>
                            </div>
                            <div>
                                <ul id="ztree" class="ztree"></ul>
                            </div>
                            <div id="addgroup" style="display: none">
                                <input type="text" id="group" name="group">
                                <button id="submit">提交</button>
                            </div>
                    
                </div>

3:css,这里的css样式是自己对于官方文档的一些修改,放了一些必要的图标,更加的生动形象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#add{
    width:80px;
    height:30px;
    background:#2299ee;
    color:#ffffff;
    border:none;
    margin-top:10px;
    margin-bottom:10px;
}

.ztree li span.button.icon01_ico_close {
    margin-right: 2px;
    background: url(../../images/ztree/close.png) no-repeat scroll 0 0 transparent;
    vertical-align: top;
    *vertical-align: middle
}

.ztree li span.button.icon01_ico_open {
    margin-right: 2px;
    background: url(../../images/ztree/open.png) no-repeat scroll 0 0 transparent;
    vertical-align: top;
    *vertical-align: middle
}

.ztree li span.button.icon02_ico_docu {
    margin-right: 2px;
    background: url(../../images/ztree/woman.png) no-repeat scroll 0 0 transparent;
    vertical-align: top;
    *vertical-align: middle
}

.ztree li span.button.icon03_ico_docu {
    margin-right: 2px;
    background: url(../../images/ztree/man.png) no-repeat scroll 0 0 transparent;
    vertical-align: top;
    *vertical-align: middle
}

4:重点在于js,主要分为初始化ztree功能;添加分组功能;ztree结构设置功能;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(function() {

    var zTreeObj;

    // 初始化ztree
    initTree();

    function initTree() {
        $.get(path() + "/ztree/init", function(data) {
            for ( var i in data) {
                if (data[i].token == "3")
                    data[i].nocheck = true;
            }
            zTreeObj = $.fn.zTree.init($("#ztree"), setting, data);
        });
    }
    // 点击显示div
    $("#add").click(function() {
        $("#addgroup").show();
    })

    // 添加分组
    $("#submit").click(function() {
        $.ajax({
            url : path() + '/ztree/group/' + $("#group").val(),
            type : 'post',
            success : function(data) {
                $("#addgroup").hide();
                // 重新加载
                initTree();
            },
            error : function(data) {
                alert("添加分组失败!!")
            }
        });
    })

    // ztree结构设置
    var setting = {
        check : {
            enable : true,
            chkStyle : "radio",
            radioType : "all"
        },
        async : {// 异步加载数据操作
            enable : true,
            url : path() + "/ztree",
            autoParam : [ "id" ],
            type : "get",
            // dataFilter : ajaxDataFilter,//用于对 Ajax 返回数据进行预处理的函数
            dataType : "json"
        },
        edit : {
            enable : true,
            showRemoveBtn : false,// 设置是否显示删除按钮
            showRenameBtn : setRenameBtn,// 设置是否显示重新命名按钮
            drag : {
                isCopy : false,
                isMove : true,
                prev : true,
                next : true,
                inner : true
            }
        },
        data : {
            keep : {
                parent : true
            // 保持父节点的状态
            },
            simpleData : {
                enable : true,
                idKey : "id",
                pIdKey : "pId"
            }
        },
        callback : {
            beforeDrag : beforeDrag,
            beforeDrop : zTreeBeforeDrop,
            onDrop : onDrop,
            onRename : zTreeOnRename,
        }
    };

    function setRenameBtn(treeId, treeNode) {
        return treeNode.isParent;
    }

    function zTreeOnRename(event, treeId, treeNode, isCancel) {
        if (treeNode.name == '')
            return;
        var params = {
            id : treeNode.id,
            name : treeNode.name,
        }
        $.ajax({
            url : path() + '/ztree/group',
            contentType : 'application/json',
            type : 'post',
            data : JSON.stringify(params),
            error : function(data) {
                alert("操作失败!!")
            }
        });
    }

    function beforeDrag(treeId, treeNodes) {
        for (var i = 0, l = treeNodes.length; i < l; i++) {
            if (treeNodes[i].token == "3") {
                return false;
            }
        }
        return true;
    }

    function zTreeBeforeDrop(treeId, treeNodes, targetNode, moveType) {
        if (targetNode.token != '3') {
            return false;
        }
        return true;
    }

    function onDrop(event, treeId, treeNodes, targetNode, moveType, isCopy) {
        if (moveType == null)
            return;

        var params = {
            id : treeNodes[0].id,
            pId : targetNode.id,
            token : moveType,
        }
        // 设置父节点
        $.ajax({
            url : path() + '/ztree',
            contentType : 'application/json',
            type : 'put',
            data : JSON.stringify(params),
            error : function(data) {
                alert("操作失败!!")
            }
        });

    }

    

    // 获取项目路径
    function path() {
        var currentPath = window.document.location.href;
        var pathName = window.document.location.pathname;
        var pos = currentPath.indexOf(pathName);
        var localhostPath = currentPath.substring(0, pos);
        var projectName = pathName.substring(0,
                pathName.substr(1).indexOf('/') + 1);
        return (localhostPath + projectName);
    }

})

好了,到此为止,一个可以添加新的节点和拖拽树形菜单的功能就实现了。

原文作者:祈澈姑娘;技术博客:https://www.jianshu.com/u/05f416aefbe1 90后前端妹子,爱编程,爱运营,爱折腾。 坚持总结工作中遇到的技术问题,坚持记录工作中所所思所见

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
zTree实现树形结构菜单
zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。 官方文档:http://www.treejs.cn/v3/api.php
别团等shy哥发育
2023/02/25
6K0
zTree实现树形结构菜单
ztree实现左边动态生成树,右边为具体信息功能
页面原型图: 图片.png 功能需求:点击左边树上的子节点,像后台发送请求,将请求到的信息展示在右边的表单里面 前端代码实现: 引入css文档: <link rel="stylesheet" type
王小婷
2018/06/04
3.4K0
大型项目技术栈第三讲 ztree的使用
zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。
易兮科技
2020/09/26
1.4K0
基于ztree树的穿梭框
前面的话:zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。专门适合项目开发,尤其是 树状菜单、树状数据。
王小婷
2019/10/14
2.6K0
基于ztree树的穿梭框
新手ztree结合springmvc 入门生成动态树
这个 autoParame 是传值给后台的,这个值 时id 也可以时pId 没点击一次都会去查询 父节点下的子节点
斯文的程序
2019/11/07
7280
新手ztree结合springmvc 入门生成动态树
ztree+ajax+json请求,实现加载一棵ztree树
前面的话:zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。专门适合项目开发,尤其是 树状菜单、树状数据。
王小婷
2021/01/02
1.9K0
树结构数据的展示和编辑-zTree树插件的简单使用
最近在项目当中遇到一个需求,需要以树结构的方式展示一些数据,并可对每一个树节点做内容的编辑以及树节点的添加和删除,刚好听说有zTree这个插件可以实现这样的需求,所以在项目的这个需求完成之后,在博客里用一个小demo的形式记录一下zTree的简单实用方法。
用户1174387
2018/12/07
2K0
树结构数据的展示和编辑-zTree树插件的简单使用
HTML(css+div)登录界面
(1)这是当时做的一个课程设计,很多人想要图片,在这里我把用到的所有图片资源分享下
全栈程序员站长
2022/06/27
5K0
HTML(css+div)登录界面
动态加载的树形菜单
在做到页面需要做到树形菜单,而且还是动态从数据库加载数据的,就是树形菜单的节点由数据库的数据来填充。
PHY_68
2020/09/16
3.3K0
动态加载的树形菜单
JQuery Ztree 树插件配置与应用小结
https://gitee.com/ishouke/front_end_plugin/blob/master/jquery-3.2.1.min.js
授客
2019/08/21
7.5K0
JQuery Ztree 树插件配置与应用小结
layer弹框删除ztree节点非阻塞问题解决
在ztree里面,删除一个节点的时候,会弹出一个弹框询问,是否删除,本来用的是网页自带的confirm弹框,根据公司的业务需求,要用到layer弹框删除,这个时候,就出现了一个问题。
王小婷
2019/09/18
8860
Vue-小demo、小效果 合集(更新中...)
(腾讯课堂学习小demo:https://ke.qq.com/course/256052) 一、简单的指令应用 ——打击灭火器 图片素材点击腾讯课堂的链接获取 html: 1 <!DOCTYPE h
xing.org1^
2018/05/17
2.6K0
ztree取消节点操作
但是在Ztree的组件里面,我们看到的勾选框并不是checkbox完成,而是使用了图片精灵,选中和未选中的状态里面是一张背景图片里面不同的定位~
王小婷
2019/11/27
1.1K0
【zTree】zTree根据后台数据生成树并动态设置前面的节点复选框的选中状态
2.根据树的name属性动态设置前面的复选框为选中(根据树节点的名字判断,也可以根据其他属性判断)
全栈程序员站长
2022/07/20
2.4K0
【zTree】zTree根据后台数据生成树并动态设置前面的节点复选框的选中状态
Jquery实现可拖拽的树菜单「建议收藏」
效果图例如以下所看到的:下载地址http://download.csdn.net/detail/javaquentin/8290417
全栈程序员站长
2022/07/10
4.7K0
Jquery实现可拖拽的树菜单「建议收藏」
ztree实现根节点右击事件,显示添加删除
1:在setting 配置里面,给callback设置,右击事件onRightClick:
王小婷
2018/09/26
2.4K0
ztree实现根节点右击事件,显示添加删除
jquery——zTree, 完美好用的树插件
这绝对是我见过最完美的tree了,尽管是国产货,但一点不输国外产品,国外的还没有见过这么强的。
全栈程序员站长
2021/12/01
8090
day49_BOS项目_01
其余步骤参考如下链接: https://www.cnblogs.com/chenmingjun/p/9513143.html#_label0 右键项目 --> Team --> Share Project…
黑泽君
2018/10/11
1.1K0
day49_BOS项目_01
获取ztree树的选中子菜单信息并且提交给后端
前面写过,ztree实现一棵树的文章,https://www.jianshu.com/p/c2b919e91e91 现在要用ajax+json模拟交互效果
王小婷
2019/09/27
1.6K0
获取ztree树的选中子菜单信息并且提交给后端
ztree实现根节点单击事件,显示节点信息
这段时间在维护公司的项目,去年做的项目里面有ztree树的例子,想起之前还没有开始写博客,一些知识点也无从找起,要新加一个右击节点事件,折腾了半天,其中也包含了一些知识点,稍稍做了一些demo。
王小婷
2018/09/26
7.3K0
ztree实现根节点单击事件,显示节点信息
推荐阅读
相关推荐
zTree实现树形结构菜单
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验