文档章节

j2ee 简单网站搭建:(十)jquery ztree 插件使用入门

b
 binux
发布于 2017/08/29 18:49
字数 1600
阅读 29
收藏 0

《j2ee 简单网站搭建:(一) windows 操作系统下使用 eclipse 建立 maven web 项目》
《j2ee 简单网站搭建:(二)添加和配置 spring + spring-mvc 的 mvc 开发环境》
《j2ee 简单网站搭建:(三)在搭建好的 spring maven web 项目中加入 mybatis 访问数据库》
《j2ee 简单网站搭建:(四)将 freemaker 模板引擎作为 spring-mvc 展现层》
《j2ee 简单网站搭建:(五)使用 jcaptcha 生成验证码图片》
《j2ee 简单网站搭建:(六)使用 hibernate validation 实现 domain 层实体类验证》
《j2ee 简单网站搭建:(七)使用 shiro 结合 jcaptcha 实现用户验证登录》
《j2ee 简单网站搭建:(八)使用 jquery-validate 实现页面验证入门》
《j2ee 简单网站搭建:(九)jquery datatables + jquery ui dialog 插件使用入门》
《j2ee 简单网站搭建:(十)jquery ztree 插件使用入门》
《j2ee 简单网站搭建:(十一)ckeditor 控件使用入门》

ztree 版本 v3.5.28

一 从官方网站下载 ztree 的 css 和 js 文件,引入项目的 web 目录中
网站地址 http://www.treejs.cn/v3/main.php#_zTreeInfo

二 在 html 页面 <head> 标签中加入 css 文件

<!-- zTree CSS -->
<link rel="stylesheet" href="你的文件路径/metroStyle.css" type="text/css">

三 在 html 页面 <body> 标签内添加绑定 ztree 插件的 ul 标签,本例中 ul 标签的 id 设置为 categorytree

<ul id="categorytree" class="ztree" style="width: 100%"></ul>

四 在 html 页面 </body> 标签内添加绑定 ztree 插件 js 文件以及 javascript 代码

<script type="text/javascript" src="你的文件路径/jquery.ztree.core.min.js"></script>
<script type="text/javascript" src="你的文件路径/jquery.ztree.excheck.js"></script>
<script type="text/javascript" src=你的文件路径/jquery.ztree.exedit.js"></script>

<!-- Page-Level Demo Scripts - Tables - Use for reference -->
<script>
    var zTree = $.fn.zTree.getZTreeObj("categorytree"); // 获得树对象
    // zTree 的参数配置,深入使用请参考 API 文档(setting 配置详解)
    var setting = {
        view : {
            selectedMulti: false, // 取消多选
            addHoverDom: addHoverDom, // 鼠标选中后显示增、改按钮
            removeHoverDom: removeHoverDom // 鼠标移除后显示增、改按钮
        },
        data :{ // 设置节点的属性值以及从服务端传送过来的数据向节点绑定的参数值
            simpleData : {
                enable : true,
                idKey : 'id', // 绑定服务端传过来的 id 参数
                pIdKey : 'pid', // 绑定服务端传过来的 pid 参数
                rootPid : 0, // 根节点的父节点 id 值
                status : 'status' // 绑定服务端传过来的 status 参数
            }
        },
        edit : { // 对节点编辑时进行的设置
            enable : true, // 允许编辑
            showRemoveBtn : false, // 是否显示 删除节点 按钮
            showRenameBtn : true, // 是否显示 修改节点内容 按钮
            renameTitle : "修改", // 如果显示 修改节点内容 按钮后,按钮上的文字显示啥
            editNameSelectAll : true, // 编辑节点名称的时候是否对名称文字全选
            // drag : { // 是否允许节点拖拽放置、复制、移动
            //     autoExpandTrigger : false,
            //     isCopy : false,
            //     isMove : false
            // }
        },
        callback: { // 设置所有的回调函数
            onRename: onRename, // 修改时调用
            onDrop: onDrop // 拖拽
        }
    };
    
    // zTree 的数据属性,深入使用请参考 API 文档(zTreeNode 节点数据详解)
    $(document).ready(function() {
        var zNodes;
        $.ajax({ // 需要调用同步方法,因此不能使用post方法,此处加载整棵树
            type:"POST",
            async:false,
            url:"get_category_tree", // 服务端获得数据的方法
            dataType : "json",
            data:null,
            success:function(result){ // 调用成功对节点进行设置
                if (result != null && result.status == true)
                    zNodes = result.data;
                
            }
        });
        zTree = $.fn.zTree.init($("#categorytree"), setting, zNodes); // 初始化树对象
    });

    function addHoverDom(treeId, treeNode) { // 在鼠标移动到节点上方时显示对节点的操作按钮并对按钮绑定处理方法
        var sObj = $("#" + treeNode.tId + "_span"); // 获得鼠标所在的节点对象
        if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0 || $("#startBtn_"+treeNode.tId).length>0) return; // 如果鼠标所在的节点正在编辑或者添加按钮已存在则以下不执行
        var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
                + "' title='添加' onfocus='this.blur();'></span>"; // 动态生成新增按钮
        var startStr = "<span class='button start' id='startBtn_" + treeNode.tId
                + "' title='启用' onfocus='this.blur();'></span>"; // 动态生成启用按钮
        var stopStr = "<span class='button stop' id='stopBtn_" + treeNode.tId
                + "' title='停用' onfocus='this.blur();'></span>"; // 动态生成停用按钮
        var statusStr = "<span id='statusSpan_" + treeNode.tId + "' title='状态'>[" + (treeNode.status ? "启用" : "停用") + "]</span>"; // 动态生成停用按钮
        sObj.after(stopStr).after(startStr).after(addStr).after(statusStr); // 在鼠标所在节点后显示添加按钮、启动按钮和其它操作按钮

        // - - - 新增按钮及处理方法 - - - //
        var addBtn = $("#addBtn_"+treeNode.tId); // 获得添加按钮对象并绑定点击事件
        if (addBtn) addBtn.bind("click", function(){ // 添加按钮点击后的操作
            var newNodeName = Math.round(Math.random()* 99999999).toString(); // 新增的节点名称
            $.ajax({ // 需要调用同步方法,因此不能使用post方法,这里需要添加节点
                type : "POST",
                async : false,
                url : "add_tree_node",
                dataType : "json",
                data : {name: newNodeName, parentId: treeNode.id, parentName: treeNode.name},
                success:function(result){
                    if (result != null && result.status == true) {
                        $('#div_alert').text("节点添加成功!").prop('class', 'alert alert-success'); // 设置提示信息并改变提示框样式为成功
                        // 返回值为数据库中的自增ID
                        zTree.addNodes(treeNode, {id: result.data, pId: treeNode.id, name: newNodeName, status: 1}); // 在ztree中添加节点,因为在设置中将treeNode 的name设置为nameWithStatus,因此这里要传这个名称
                    }
                    else $('#div_alert').text("节点添加失败!").prop('class', 'alert alert-warning'); // 设置提示信息并改变提示框样式为警告
                }
            });
            return false;
        });

    function removeHoverDom(treeId, treeNode) { // 鼠标移除后清除临时生成的对象
        $("#addBtn_"+treeNode.tId).unbind().remove(); // 鼠标移动后删除添加按钮所有内容
        $("#startBtn_"+treeNode.tId).unbind().remove(); // 鼠标移动后删除启用按钮所有内容
        $("#stopBtn_"+treeNode.tId).unbind().remove(); // 鼠标移动后删除停用按钮所有内容
        $("#statusSpan_"+treeNode.tId).unbind().remove(); // 鼠标移动后删除状态框内容
    }

    function onRename(e, treeId, treeNode, isCancel) { // 修改名称
        var parentNode = treeNode.getParentNode();
        $.ajax({ // 需要调用同步方法,因此不能使用post方法,这里需要添加节点
            type : "POST",
            async : false,
            url : "modify",
            dataType : "json",
            data : {id: treeNode.id, name: treeNode.name, parentId: (parentNode != null ? parentNode.id : 0), parentName: (parentNode != null ? parentNode.name : "[- 无 -]")},
            success:function(result){
                if (result != null && result.status == true) {
                    $('#div_alert').text("修改成功!").prop('class', 'alert alert-success'); // 设置提示信息并改变提示框样式为成功
                    isCancel = false;
                }
                else {  // 设置提示信息并改变提示框样式为警告
                    $('#div_alert').text("修改失败!").prop('class', 'alert alert-warning');
                    isCancel = true;
                }
            }
        });
        return isCancel;
    }

    function onDrop(event, treeId, treeNodes, targetNode, moveType) { // 调整树形节点的位置
        $.ajax({ // 需要调用同步方法,因此不能使用post方法,这里需要添加节点
            type : "POST",
            async : false,
            url : "modify",
            dataType : "json",
            data : {id: treeNodes[0].id, name: treeNodes[0].name, parentId: (targetNode != null ? targetNode.id : 0), parentName: (targetNode != null ? targetNode.name : "[- 无 -]")},
            success:function(result){
                if (result != null && result.status == true) {
                    $('#div_alert').text("位置调整修改成功!").prop('class', 'alert alert-success'); // 设置提示信息并改变提示框样式为成
                }
                else {  // 设置提示信息并改变提示框样式为警告
                    $('#div_alert').text("位置调整修改失败!").prop('class', 'alert alert-warning');
                }
            }
        });
    };
</script>

 

© 著作权归作者所有

共有 人打赏支持
b
粉丝 1
博文 34
码字总数 58499
作品 0
兰州
程序员
私信 提问
简单灵活的 Java CMS - EasyCms

简介 Java EasyCms 使用最简单性能最高的框架,将cms系统简单到极致,灵活的栏目扩展,快速的构建普通网站 生成的静态演示站(测试): www.j4cms.com 用到的框架工具 java,servlet,guice...

姜小北
2017/08/02
0
0
Java easycms版本1.0发布

jsp,servlet ,guice, mybatis, 5张表,最简约但不简单的Java cms系统 开发环境 maven, eclipse neon,jdk8(编译1.7),tomcat,mysql5.6 简介 Java EasyCms 使用最简单性能最高的框架,将...

姜小北
2017/08/09
0
0
请教tomcat缓存问题!!!!

整个思路是:用jquery提交url到servlet,然后servlet查询数据库,然后返回json对象,利用ztree构建树。 遇到的问题是:当我整个项目运行起来时侯,这个时候我更新了数据库,然后刷新页面,还...

番茄蛋
2012/06/21
4.3K
4
搭建分布式架构技术?Dubbo、zookeeper、KafKa、redis、fastdfs、单点登录sso、springmvc+mybatis+shiro、Restful服务、bootstrap html5 css3

JEESZ是一个大型分布式的面向服务的JavaEE体系快速研发平台,基于模块化、服务化、原子化、热插拔的设计思想,使用成熟领先的无商业限制的主流开源技术构建。 采用服务化的组件开发模式,可实...

123321abcd
2017/04/08
403
1
Jspxcms 9.0.0 发布,国内开源 Java CMS

Jspxcms-9.0.0-release今天正式发布。同时官方的社区论坛系统也上线了,基于kotlin、spring boot 2、mybatis、thymeleaf开发,待功能更加完善后,会采用GPL-3开源发布。地址:http://www.js...

jspxcms
05/15
1K
6

没有更多内容

加载失败,请刷新页面

加载更多

Eureka Server启用 https服务指北

文章共 591字,阅读大约需要 2分钟 ! 概 述 在我的前文《Eureka Server 开启Spring Security Basic认证》中已经给 Eureka Server 开启了最基本的鉴权措施,本文则让 HTTPS加持于 Eureka Ser...

CodeSheep
18分钟前
2
0
OSChina 周二乱弹 —— 其实我在地板也睡不着

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @witt-z :分享歌词: 阴天 在不开灯的房间,当所有思绪都一点一点沉淀。 分享莫文蔚的单曲《阴天》: 《阴天》- 莫文蔚 手机党少年们想听歌,...

小小编辑
41分钟前
106
5
微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
3
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部