文档章节

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

b
 binux
发布于 2017/08/29 18:49
字数 1600
阅读 25
收藏 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
缅甸银河国际开户13170533331

解决这个问题涉及到两个方面的问题: 配置问题 、引入静态文件问题 1、配置问题 web.xml配置的DispatchServlet如下: [html] view plain copy springmvc org.springframework.web.servlet.D...

银河国际
05/26
0
0
Struts2 整合jQuery实现Ajax功能

Struts2 整合jQuery实现Ajax功能 技术领域很多东西流行,自然有流行的道理,这几天用了jQuery,深感有些人真是聪明绝顶,能将那么多技术融合的如此完美。 首先明确个概念: jQuery是什么:是...

孙斐
2011/10/12
0
2
共享定制云平台 - AWCP

AWCP 是一个共享定制云平台,集成了 jflow 工作流引擎,并完成了基于钉钉的开发框架自动生成,可快速搭建基于钉钉管理系统。完成了钉钉端页面配置管理,审核审批,完成了钉钉 PC 端页面配置管...

曹勇
2017/10/23
0
9
jQuery冲突问题的解决方法

在JSP中使用<jsp:include page="somethingPage.jsp"></jsp>来嵌套页面的时候,会出现jQuery之间的冲突。 解决办法: 在需要嵌套的页面中有jQuery引入冲突问题的地方做如下处理: var $jq = ...

Ryan-瑞恩
2013/09/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
3
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
6
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
47
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部