ztree实现拖拽功能

摘要:
您可以使用setting:varsetting={edit:{enable:拖动:数据:{key:{enable:回调:onRemove:类型:成功:函数(res){zNodes=res.data;}}返回true==false:

最近刚刚接触了一个树形结构的文件目录的,通过拖拽实现结构的变化,利用ztree来实现;

ztree是基于jquery的一个插件

api相对简单上手,相比与element 、antd 个人感觉相对简单些

基本入手思路如下:

  1.这个官方文档  http://www.treejs.cn/v3/main.php#_zTreeInfo,

  在马云上下载demo 找到对应的文件, 打开相应的功能(ztree数据渲染跟传统dom渲染不一样,ztree默认显示的是name,可以通过setting: 设置属性,来指定代替name )

  2,根据demo显示的内容找相应的代码: 来嵌套到自己的代码中 ,最后将ajax请求到的数据用 zNodes来代替;

  代码基本如下 : 

     

  <link rel="stylesheet" href="http://t.zoukankan.com/css/zTreeStyle.css" type="text/css">
  <script type="text/javascript" src="http://t.zoukankan.com/js/jquery.ztree.core.js"></script>
  <script type="text/javascript" src="http://t.zoukankan.com/js/jquery.ztree.excheck.js"></script>
  <script type="text/javascript" src="http://t.zoukankan.com/js/jquery.ztree.exedit.js"></script>

    html 部分    

      <div     ></div>
      

    js代码如下:

      

<script>

var setting = {
edit: {
enable: true,
showRemoveBtn: showRemoveBtn,
showRenameBtn: showRenameBtn,
drag: {
isCopy: false,//所有操作都是move
isMove: true,
prev: true,
next: true,
inner: true
}
},
data: {
key:{
name:"orgName"
},
simpleData: {
enable: true,
idKey:"orgCode",
pIdKey:"parentCode",
rootPid: ""
}
},
callback: {
beforeDrag: beforeDrag,
beforeDrop: beforeDrop,
onDrop: onDrop,
beforeRemove: beforeRemove,
beforeRename: beforeRename,
onRemove: onRemove,
onRename: onRename
}
};

var zNodes =[] , newCount = 1, log, className = "dark";
//加载资源
$.ajax({
url: 'http://10.3.10.190/enterprise-pc/org/allorg.mvc',
type: "post",
async: false,
success: function (res) {
zNodes = res.data;
t = $.fn.zTree.init($("#treeDemo"), setting, zNodes)
}
})
//在拖拽之前
function beforeDrag(treeId, treeNodes) {
for (var i=0,l=treeNodes.length; i<l; i++) {
if (treeNodes[i].drag === false) {
return false;
}
}
return true;
}
//用于捕获节点拖拽操作结束之前的事件回调函数,并且根据返回值确定是否允许此拖拽操作
//默认值 null
function beforeDrop(treeId, treeNodes, targetNode, moveType) {
return targetNode ? targetNode.drop !== false : true;
}
//用于捕获节点拖拽操作结束的事件回调函数 默认值: null
function onDrop(event, treeId, treeNodes, targetNode,moveType) {
//拖拽成功时,修改被拖拽节点的pid
console.log(event)
console.log(treeId +'11111')
console.log(treeNodes )
console.log(treeNodes[0].parentCode)
console.log(targetNode)
console.log(moveType)
$.ajax({
type:'post',
url: '',
dataType: "text",
async: false,
success: function (data) {
},
error: function (msg) {
}
});
}
function showRemoveBtn(treeId, treeNode) {
return !treeNode.isFirstNode;
}
function showRenameBtn(treeId, treeNode) {
return !treeNode.isLastNode;
}
//删除节点之前执行的函数
function beforeRemove(treeId, treeNode) {
console.log('remove')
className = (className === "dark" ? "":"dark");
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
zTree.selectNode(treeNode);
return confirm("确认删除 节点 -- " + treeNode.orgName + " 吗?");
}
//删除节点执行的函数
function onRemove(e, treeId, treeNode) {

}
//重命名之前执行的函数
function beforeRename(treeId, treeNode, newName, isCancel) {
className = (className === "dark" ? "":"dark");
//showLog((isCancel ? "<span style='color:red'>":"") + "[ beforeRename ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.orgName + (isCancel ? "</span>":""));
if (newName.length == 0) {
setTimeout(function() {
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
zTree.cancelEditName();
alert("节点名称不能为空.");
}, 0);
return false;
}
return true;
}
//重命名是执行的函数
function onRename(e, treeId, treeNode, isCancel) {

}
//再删除节点之前调用这个函数
function beforeRemove(treeId, treeNode) {
className = (className === "dark" ? "":"dark");
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
zTree.selectNode(treeNode);
return confirm("确认删除 节点 -- " + treeNode.orgName + " 吗?");
}
//删除节点值执行的函数
function onRemove(e, treeId, treeNode) {
//showLog("[ onRemove ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.orgName);
}
function showRemoveBtn(treeId, treeNode) {
return !treeNode.isFirstNode;
}
function showRenameBtn(treeId, treeNode) {
return !treeNode.isLastNode;
}
var newCount = 1;
//添加
function addHoverDom(treeId, treeNode) {
var sObj = $("#" + treeNode.tId + "_span");
if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
var addStr = "<span id='addBtn_" + treeNode.tId
+ "' title='add node' onfocus='this.blur();'></span>";
sObj.after(addStr);
var btn = $("#addBtn_"+treeNode.tId);
if (btn) btn.bind("click", function(){
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
zTree.addNodes(treeNode, {id:(100 + newCount), pId:treeNode.id, orgName:"new node" + (newCount++)});
return false;
});
};
//
function removeHoverDom(treeId, treeNode) {
$("#addBtn_"+treeNode.tId).unbind().remove();
};
</script>

免责声明:文章转载自《ztree实现拖拽功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇html5对密码加密内网渗透之socks5代理(reGeorg+proxifier详细配置说明)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.net core 3.0 实现读取appsettings.json配置文件

转自:https://www.cnblogs.com/jiyuwu/p/11776044.html 第一种直接放到通用类库,那里想调往那调。 1.编辑我们的appsettings.json文件 { "Logging": { "LogLevel": { "Default": "Information", "Micros...

MongoDB update数据语法

在前面的文章“mongodb 查询的语法”里,我介绍了Mongodb的常用查询语法,Mongodb的update操作也有点复杂,我结合自己的使用经验,在这里介绍一下,给用mongodb的朋友看看,也方便以后自己用到的时候查阅:注:在这篇文章及上篇文章内讲的语法介绍都是在mongodb shell环境内的,和真正运用语言编程(如java,php等)使用时,在...

python爬虫(7)--Beautiful Soup的用法

1.Beautiful Soup简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。 Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beau...

vue的富文本编辑器使用,并且添加显示当前输入字数

下载: npm install vue-quill-editor --save main.js中引入 //富文本编辑器 import VueQuillEditor from 'vue-quill-editor'; import 'quill/dist/quill.core.css' import 'quill/dist/quill.snow.css'...

for循环删除数组中的元素crash问题

转载请注明出处!!! 如以下代码: NSMutableArray *array = [NSMutableArray arrayWithObjects:@"2",@"3",@"4",@"9",@"4",@"12",@"22",@"4",@"4",@"5",@"6",@"1", nil]; for (NSString *str in array)...

软工作业05

软件工程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 作业要求 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10619 作业目标 网页实现家族树 作...