zTree应用实例详讲(3)

上一讲中,已经讲到了重命名与删除。那么这一讲,我们来做新建文件夹。

其实新建是非常简单的,想一下我们想要的效果:点击新建,然后在一个节点下面出现一个新建的文件夹,并且与此同时这个新建的文件夹属于编辑的状态,也就是说它的光标正在闪亮,要求你输入文件名,输入文件名过后新建文件完成,效果图,像是这样:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJEAAABCCAIAAADYEKP1AAAEOklEQVR4nO2ZzWrbQBSF553Sd8g6bxDwK2ShTTfedNVdC3qGhEA3ojFdhECgNLYhDoE0JTRtE4L7QxrS/FEb1IWIOpm5986VLMm6yR0ORpZmRuPzzZFkjbm4OeVoMBgwa6rqlpn7CFRFxWVWLmeazjqkOZOn+edsctb7PXrhaHLWm7s1rdX8czbud9PJW0fnH1/9/XOINVlYWCC+2vv9glUj+sEOEeedZdiVMePnbH1zN4oTX+ubu3xm0+u1cb9ra/Jtvejv93f6rWyQ/oYPHmzlH/KnSHAw1TPjK4qTNE2n08nd3e3V1eXF+Y9f309Ovh5FcQLWP91emV6vBXW6vQJSoW1i5gxEhf3A4PwAJ4E/BnpUFTDj5yyKkxyYMSYD9vnooA5mtJvMqQ0yI2Bg3YJTxG+C7ameGV9RnOQJM8ZkwA4PRgSz25+vg8qZ+bOVYFY0hVjNCyQ09MzABhmcW9UwK5SzLGF22d/byZhl/di9HW8sc5gdbyxjvxPzjikiZ0RofIRYfWxiEeethhlfUZzk9zBjzOHBaH9vZzTcwnI2OzPwKzNDTBODUwSkgo2H7qoyZoVylt/DsoSNhlsf3r/DmA1XFy+/PA9quLpYyESCKGgoAYPOmTMGfs5qZ8ZXFCf5PSwHVh8zYoLbdYiQ0REJGu37zokpdrRKZvX9P5uFGdMd0BQnNw4/EAmWMyxk/ikaZVafxv3ucHUxqHG/GwSGQeXXxBoSGw5sjAoW9BqZtecNvW9WcF6DdUC7MQZEXJyYFsoZePbKmKnaI3k5U1WTs7S3pCqnGpnROUt7S+nZG1Vh1cosnLNyg74vxpjUK+BOYn+JoyW6opsESpPMmDnDFp0JZs6bSXtP7pF/yKnDtzXvhwNANjNmzohFZzpnhZzyHfdZgmiJDbtzZidlSt3M+G80aGbgorOdMwcG6CPhps8S20Mz9h2WlzP+inPOjL+AaefMv17ZPhIkMCTgHrBDmgp4IpJZ0jGmk2BfG2HGXHEuzQyc7BjCFMoHDYk4SgMAR8JglmHKOCUdY569/PTgaAPMmCvONjPmojPx3Bh0inCtKmbE0fC1Melk88kFljbCjLninDPjL2DSz42+NcycYc3pTogcY8PjQHtwVWyMGXPFeRZmtpug6b5TQdewCoVyhhEKnf3+kvj/ImmVBpgxV5xzZvzFMOe5Eft07MPmPsfrQgCIKUIye3gP87E1wIy54lyamRMmcCO1HvmCRhOtwIYl0DKujXhp4f+zEjmzzQWtsTeIewwHZJAZp59WM+PL/k/NXHQm3oM85tJCZoX11MpjYPbENWdmqratearaI2UmT8pMnpSZPCkzeVJm8qTM5EmZyZMykydlJk/KTJ6UmTwpM3lSZvKkzORJmcmTMpMnZSZPykyelJk8KTN5UmbypMzkSZnJkzKTJ2UmT8pMnpSZPCkzefoHe6tBOaK3/EAAAAAASUVORK5CYII=" alt="" />

现在开始:

  第一步:在你的页面加入一个按钮,然后加入一个事件

<input type="button" value = "新建文件夹" onclick="add()" />

 第二步:新建add方法

  像是这样:

  

//新建文件夹点击事件
function add() {
//step1 得到tree
var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
var node = treeObj.getSelectedNodes()[0]; //默认为第一个选中的文件夹新建子文件 var newNode = {
name: "新建文件夹",
isParent: true,
isNew:true,
id:"新建的id23423",//真正使用的时候,请设为空。
open: false //是否为展开状态
};
newNode = treeObj.addNodes(node, newNode,false)[0]; //把自已 添加进去,注意,光标的定位,在回调函数中 自动展开的时候有可能会去获取子节点 在展开之前会执行异步 //重命名新建的文件 改变数据库
treeObj.editName(newNode); //刷新一下树 加载父节点 异步的时候使用。
//treeObj.reAsyncChildNodes(newNode.getParentNode(), "refresh");
}

  看到代码:首先是得到tree。

    二:得到选中的节点,你可以指定,如果选择了多个文件,那么你可以指定选中的为最后一个或第一个,然后为其重命名。

    三:新建一个对象,里面以json格式,把key和value都加上。

    四:treeObj.addNodes();里面有三个参数,第一个参数是在哪个节点下新建就传哪个节点 第二个参数就是我们新建的这个对象,第三个参数是指新建过后是否展开父节点,也就是是否把node展开,注意不是newNode

    五:treeObj.addNodes(node, newNode,false)[0]; 看到后面的下标0了吗?因为它返回的是一个数组,这个数组是我们建的那么新对象,(可以一次性建多个的)[0]返回第一个节点,这里是我们新建的那个节点。

    六:让新建的这个节点进入编辑状态:treeObj.editName(newNode);调用editName(新节点).

    这样,我们新建的节点就进入了编辑的状态。

    这里需要注意的是,我们的新建是进入到edit的监听事件,我们的edit本身也进入了edit监听事件,所以我们新建的节点里,加一个isNew:true,说明这是一个新建的文件夹重命名,并不是之前存在而得命名的.

那么我们在我们的edit监听事件中,就是注意了,就该这样来写ajax:

//回调函数,重命名过后,新名字被保存,然后回调到这里可以得到新名字
function zTreeOnRename(event, treeId, treeNode, isCancel) {
//可以自定义属性,然后根据这些属性来完成操作
alert(treeNode.id + ",重命名过后的回调函数 " + treeNode.name); //1.修改 数据库中存在的重命名 看是否为isNew来决定
// 2.数据库中不存在的重命名,就是新建 id就是null 新是新建,然后要去得到父节点的id ajax传过去,就ok了。 同样要结合js的ajax来执行
if (treeNode.isNew&&treeNode.isNew!='undefined') {
//调用新建的ajax
} else {
//调用重命名的ajax
}
}

  上面这个回调函数是上一节讲到过的,所以呢,这里不作详讲。

  

  此功能完成。

  

  想象一下,我们所讲的几个功能都是通过按钮来完成了,如果说我们不通过页面按钮,而通过右击菜单,要怎么做呢。

  下一讲,我们去实现右击菜单来操作增,册,改,查。

  

  

 
 

zTree应用实例详讲(3)的更多相关文章

  1. zTree应用实例详讲

    zTree应用实例详讲(1) 因为项目的需要,要创建一棵动态的文件树,此树除了实现异步获取子节点外,还要实现对树节点的增.删.改.查.移动.重命名.批量删除.批量移动. 每一个操作都要和数据库打交道. ...

  2. iOS几个效果动画-------------------(实例详讲)qq粘性效果

    这几天做了一些简单iOS的效果图,感觉苹果官方已经帮我们做了很多了,我们只是站在巨人的肩膀上编程,这些也没什么难的,最难的也就是用到了初中的三角函数,先让大家看看这几个动画吧.先列这几个把,由上而下分 ...

  3. 转:【工欲善其事必先利其器】—Entity Framework实例详解

    开始本篇文章之前,先说一下Entity Framework 6 Alpha1在NuGet中已可用,原文链接http://blogs.msdn.com/b/adonet/archive/2012/10/ ...

  4. Struts2使用Interceptor实现权限控制的应用实例详解

    Struts2使用Interceptor实现权限控制的应用实例详解 拦截器:是Struts2框架的核心,重点之重.因此,对于我们要向彻底学好Struts2.0.读源码和使用拦截器是必不可少的.少说了. ...

  5. SQL优化 MySQL版 - 多表优化及细节详讲

    多表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...

  6. SQL优化 MySQL版 - 单表优化及细节详讲

    单表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...

  7. 【python3+request】python3+requests接口自动化测试框架实例详解教程

    转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...

  8. 一对一关联查询注解@OneToOne的实例详解

    表的关联查询比较复杂,应用的场景很多,本文根据自己的经验解释@OneToOne注解中的属性在项目中的应用.本打算一篇博客把增删改查写在一起,但是在改的时候遇到了一些问题,感觉挺有意思,所以写下第二篇专 ...

  9. Vue 实例详解与生命周期

    Vue 实例详解与生命周期 Vue 的实例是 Vue 框架的入口,其实也就是前端的 ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进 ...

随机推荐

  1. 为WebBrowser的WEB页的Document注册事件的问题

    原文:为WebBrowser的WEB页的Document注册事件的问题 当使用WebBrowser,并对其装载的Web页建立Document的事件后,WebBrowser里的页面元素都变得难于操作了, ...

  2. Quartz使用-入门使用(java定时任务实现)

    注:这里使用的是Quartz1.6.5版本号(包:quartz-1.6.5.jar) //測试main函数 //QuartzTest.java package quartzPackage; impor ...

  3. IE6下jquery ajax报error的原因

    用jquery ajax()方法,在其他浏览都通过,IE7以上都通过,唯独在ie6不行. 我这边的解决方案是:必须保证ajax里面的所有数字为小写,ie6对大小写敏感. 错误: $.ajax({ ur ...

  4. 一步一步写算法(之n!中末尾零的个数统计)

    原文:一步一步写算法(之n!中末尾零的个数统计) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在很多面试的题目中,求n!结果中零的个数也是 ...

  5. 阐述 QUEST CENTRAL FOR DB2 八罪

    作为一个从事oracle plsql发展2猿 - 年计划,现在,在退出DB2数据仓库项目. 同PL/SQL Developer参考,下文PLSQL,阐述QUEST CENTRAL FOR DB2 5. ...

  6. windows 7 下快速搭建php环境(windows7+IIS7+php+mysql)

    原文:windows 7 下快速搭建php环境(windows7+IIS7+php+mysql) 1).采用理由: 优点:最大化的桌面图形化操作系统,可维护性优秀.基于IIS v6.0/v7.0(20 ...

  7. CentOS上部署Apache、MySQL和PHP

    centos上yum安装很方便,下面介绍编译安装的方式. 第一步要在CentOS上安装gcc.g++等开发工具 可以从系统光盘上安装,或者 #yum groupinstall "Develo ...

  8. [译]Java垃圾回收器的类型

    说明:这篇文章来翻译来自于Javapapers 的Types of Java Garbage Collectors 在这部分的教程中我们将讲到可使用的四种不同类型的Java垃圾回收器.垃圾回收是Jav ...

  9. PLSQL导入/导出数据方法

    PLSQL导入/导出数据方法 PLSQL导入/导出数据方法 以前导数据库信息的时候,总是会先开启sql窗口,把自己手写的建表文件复制进去,然后再导入数据信息. 今天突然懒得去找以前的建表文件,而想用S ...

  10. WinXP 无线技巧“区域没有通过无线网络中的发现”一个可能的原因!

    貌似WinXP经典或无限.我一直沿用至今,我不知道这一天会放弃. 遇到的问题,也许有XP爱好者都遇到过还得看,写下一点文字注释.----------------------- 切割线 -------- ...