<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE> ZTREE DEMO - copyNode / moveNode</TITLE>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../js/jquery-3.3.1.js"></script>
<link rel="stylesheet" href="../bower_components/ztree/css/zTreeStyle/demo.css" type="text/css">
<link rel="stylesheet" href="../bower_components/ztree/css/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="../bower_components/ztree/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../bower_components/ztree/js/jquery.ztree.core-3.5.js"></script>
<script type="text/javascript" src="../bower_components/ztree/js/jquery.ztree.excheck-3.5.js"></script>
<script type="text/javascript" src="../bower_components/ztree/js/jquery.ztree.exedit-3.5.js"></script>
<SCRIPT type="text/javascript">
<!--
var setting = {
view: {
selectedMulti: false
},
edit: {
enable: true,
showRemoveBtn: false,
showRenameBtn: false
},
data: {
simpleData: {
enable: true
}
},
callback: {
beforeClick: beforeClick
}
}; var zNodes =[
{ id:1, pId:0, name:"父节点 1", open:true},
{ id:11, pId:1, name:"叶子节点 1-1"},
{ id:12, pId:1, name:"叶子节点 1-2"},
{ id:13, pId:1, name:"叶子节点 1-3"},
{ id:2, pId:0, name:"父节点 2", open:true},
{ id:21, pId:2, name:"叶子节点 2-1"},
{ id:22, pId:2, name:"叶子节点 2-2"},
{ id:23, pId:2, name:"叶子节点 2-3"},
{ id:3, pId:0, name:"父节点 3", open:true },
{ id:31, pId:3, name:"叶子节点 3-1"},
{ id:32, pId:3, name:"叶子节点 3-2"},
{ id:33, pId:3, name:"叶子节点 3-3"}
]; function fontCss(treeNode) { var aObj = $("#" + treeNode.tId + "_a");
aObj.removeClass("copy").removeClass("cut");
if (treeNode === curSrcNode) {
if (curType == "copy") {
aObj.addClass(curType);
} else {
aObj.addClass(curType);
}
}
} function beforeClick(treeId, treeNode) {
alert('你选择前点击了' + treeNode.name);
return !treeNode.isCur; //点剪切/复制以前,点击此结点isCur还未定义,所以强制返回true,点剪贴/复制以后返回false
} var curSrcNode, curType;
function setCurSrcNode(treeNode) {
var zTree = $.fn.zTree.getZTreeObj("sys");
if (curSrcNode) { //当第一次处理()选中的结点时,curSrcNode还未定义,返回false,第二次处理()时,返回true
delete curSrcNode.isCur;
var tmpNode = curSrcNode;
curSrcNode = null; //粘贴完第一个后,为了重复利用,需要清空curSrcNode,方便再次选择
fontCss(tmpNode);
}
curSrcNode = treeNode;
if (!treeNode) return; //如果不存在,退出该函数 curSrcNode.isCur = true;
zTree.cancelSelectedNode(); //处理好后,取消选中的点
fontCss(curSrcNode);
}
function copy(e) {
var zTree = $.fn.zTree.getZTreeObj("sys"),
nodes = zTree.getSelectedNodes();
if (nodes.length == 0) {
alert("请先选择一个节点");
return;
}
curType = "copy";
alert('你选择了' + nodes[0].name);
setCurSrcNode(nodes[0]);
}
function cut(e) {
var zTree = $.fn.zTree.getZTreeObj("sys"),
nodes = zTree.getSelectedNodes();
if (nodes.length == 0) {
alert("请先选择一个节点");
return;
}
curType = "cut";
setCurSrcNode(nodes[0]);
}
function paste(e) { //点击paste按扭时,判断curSrcNode是否定义
if (!curSrcNode) { alert("请先选择一个节点进行 复制 / 剪切");
return;
} var zTree = $.fn.zTree.getZTreeObj("sys"),
nodes = zTree.getSelectedNodes(),
targetNode = nodes.length>0? nodes[0]:null; //如果选中多个,则只对第一个进行处理,如果为空,则定义为null alert(curSrcNode.parentTId); if (curSrcNode === targetNode) { //同输出 alert("不能移动,源节点 与 目标节点相同");
return; } else if (curType === "cut" && ((!!targetNode && curSrcNode.parentTId === targetNode.tId) || (!targetNode && !curSrcNode.parentTId))) {
//当为cut的时候,一:1.目标结点存在 2.目标结点是选中的结点的父结点
// 二: 1.目标结点 和 选中的结点的父结点 都是root(我也不知道昨说,这么说,你应该知道) alert("不能移动,源节点 已经存在于 目标节点中");
return; } else if (curType === "copy") { targetNode = zTree.copyNode(targetNode, curSrcNode, "inner"); //复制函数 } else if (curType === "cut") { targetNode = zTree.moveNode(targetNode, curSrcNode, "inner"); //剪贴函数 if (!targetNode) { alert("剪切失败,源节点是目标节点的父节点");
}
targetNode = curSrcNode;
}
setCurSrcNode();
delete targetNode.isCur;
zTree.selectNode(targetNode);
} $(document).ready(function(){
$.fn.zTree.init($("#sys"), setting, zNodes);
$("#copy").bind("click", copy);
$("#cut").bind("click", cut);
$("#paste").bind("click", paste);
});
//-->
</SCRIPT> </HEAD> <BODY>
<div class="content_wrap">
<div class="zTreeDemoBackground left">
<ul id="sys" class="ztree"></ul>
</div>
<div class="right">
[ <a id="copy" href="#" title="复制" οnclick="return false;">复制</a>
[ <a id="cut" href="#" title="剪切" οnclick="return false;">剪切</a> ]
[ <a id="paste" href="#" title="粘贴" οnclick="return false;">粘贴</a> ]
</div>
</div>
</BODY>
</HTML>

javascript入门 之 zTree(十三 移动/复制事件)的更多相关文章

  1. javascript入门 之 ztree (十 checkbox选中事件)

    <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - beforeCheck / onCheck< ...

  2. javascript入门 之 ztree (八 一系列鼠标事件)

    <!DOCTYPE html> <HTML> <HEAD> <meta http-equiv="content-type" content ...

  3. javascript入门 之 zTree(十一 托拽事件(一))

    <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - drag & drop</TITLE ...

  4. javascript入门 之 zTree(十二 托拽事件(二))

    1.逻辑可能有不完善的地方,如果发现,请指出. <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - d ...

  5. javascript入门 之 ztree (六 结点的点击和展开/折叠事件)

    1.注意: 测试点击事件时,如果要测试取消选中和追加选中,如果按住ctrl和win键无用,则需要先用鼠标左键按住,然后,在松开左键的前几毫秒按住ctrl键便可! <!DOCTYPE html&g ...

  6. javascript入门 之 zTree(十四 增删查改)(二)

    <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - addNodes / editName / rem ...

  7. javascript入门 之 zTree(十四 增删查改)(一)

    <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - beforeEditName / beforeRe ...

  8. javascript入门 之 ztree (九 单/复选框问题)

    <!DOCTYPE html> <HTML> <HEAD> <meta http-equiv="content-type" content ...

  9. javascript入门 之 ztree(七 结点的查询)

    <!DOCTYPE html> <HTML> <HEAD> <meta http-equiv="content-type" content ...

随机推荐

  1. 深入理解Java内存模型(摘)

    --摘自 周志明<深入理解Java虚拟机> 转自 https://www.jianshu.com/p/15106e9c4bf3 深入理解Java内存模型(摘) java内存模型(Java ...

  2. foobox更新日志

    2020-1-31, 6.1.5.1a 版(*) 跟进汉化版修正.(*) MusicTag升级到 1.0.4.0.(*) 部分图标改良,其他优化和修正.(+) 丰富网络功能,增加一个搜索源,一个榜单源 ...

  3. 《深入理解 Java 虚拟机》读书笔记:早期(编译期)优化

    正文 Java 语言的 3 类编译器: 前端编译器:把 java 文件 转变成 class 文件.例如:Sun 的 Javac. JIT 编译器(即时编译器):后端运行期编译器,把字节码转变成机器码. ...

  4. ElegantSnap 一个优雅的,易用的iOS/tvOS/macOS自动布局框架, 超级详细的使用教程,多视图水平等宽/垂直等高排列

    ElegantSnap ElegantSnap(Base on SnapKit) to make Auto Layout easy and elegant on both iOS and OS X. ...

  5. Spring WebFlux 入门

    1. WebFlux介绍 Spring WebFlux 是 Spring Framework 5.0中引入的新的响应式web框架.与Spring MVC不同,它不需要Servlet API,是完全异步 ...

  6. windows10环境下QtCreator中出现skipping incompatible xxx when searching for xxx 问题解决办法

    windows10环境下QtCreator中出现skipping incompatible xxx when searching for xxx 我再QtCreator中想导入一个外部库时,他提示不匹 ...

  7. 图片OCR(Optical Character Recognition)

    目录 Photo OCR问题描述 滑动窗口(Sliding Windows) 获得大量数据和人工数据(Getting Logs of Data and Artificial Data) 瓶颈分析:需要 ...

  8. 零基础使用Swift学习数据科学

    概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...

  9. DOM 操作成本到底高在哪儿?

    从我接触前端到现在,一直听到的一句话:操作DOM的成本很高,不要轻易去操作DOM.尤其是React.vue等MV*框架的出现,数据驱动视图的模式越发深入人心,jQuery时代提供的强大便利地操作DOM ...

  10. adb的连接设备故障分析(三)

    一,如果使用adb devices进行检测,发现没有任何设备信息,我们就需要检查是否有手机/模拟器连接上 二,如果是手机进行连接,windows右下角有出来如下提示的话,需要检查你的手机驱动是否有安装 ...