问题:项目上遇到一个问题,需要作出一个目录树显示相关内容的层级结构关系。
插件:
目录树插件,在这里我选用了ztree,十分方便好用(UI有待提升哈~)下方是ztree插件 需要的自取
jquery.smartMenu.js,一个右击鼠标出现菜单栏的插件。感兴趣的自己百度一下。
代码:
html部分:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>物理位置管理</title>
<link rel="stylesheet" type="text/css" href="css/zTreeStyle.css"/>
<link rel="stylesheet" type="text/css" href="css/smartMenu.css"/>
</head>
<body>
<div class="wrap">
<div id="treePhy" class="ztree"></div>
</div>
</body>
<script src="js/jquery-2.1.1.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery.ztree.all.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery-smartMenu-min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/locationSet.js" type="text/javascript" charset="utf-8"></script>
</html>
js部分(locationSet.js):
var zTreeObjPhy;
// zTree 的参数配置,深入使用请参考 API 文档(setting 配置详解)
var setting = {
check: {
enable: false
},
view: {
//双击节点是否展开
dblClickExpand: true
},
edit: {
enable: true,
showRemoveBtn: false,
showRenameBtn: false,
drag:{
isCopy:false,
isMove:false
}
},
data: {
key: {
children: "children",
name: "name",
title: "id",
url: "link"
},
simpleData: {
//使用简单数据模式,不需要用户再把数据库中取出的 List 强行转换为复杂的 JSON 嵌套格式
enable: true
}
}
};
var oldarr = [];//同级的名称
var oldarr2 = [];//下一级的名称
var namelastname='';
var istwoname_obj;
var gettime = function(){
var timestamp=new Date().getTime();
return timestamp
}
var addCount = 1;
function addTreeNode() { //增
var name = "增加" + namelastname;
var id = gettime()+'';
id=Number(id.substr(-10));
var parentid=zTree.getSelectedNodes()[0].id+"";
if(oldarr2.indexOf(name)>-1){
alert('新增加的名称为 "'+ name +'" 与原列表中的名称有重复,请先修改原名称')
return false;
}
if (zTree.getSelectedNodes()[0]) {
console.log('增加');
zTree.addNodes(zTree.getSelectedNodes()[0], {id:id, pId:parentid, name:name});
// $.ajax({
// type: "post",
// url: "url",
// async: true,
// dataType: "json",
// contentType: "application/json",
// data: JSON.stringify({
// "id":id,
// "parentid": parentid,
// "name": name
// }),
// success: function (data) {
// console.log(data);
// if(data.code==0){
// alert("添加成功");
// zTree.addNodes(zTree.getSelectedNodes()[0], {id:id, pId:parentid, name:name});
// }else{
// alert("请展开目录后添加");
// }
// },
// error: function(){
// alert("请求失败");
// }
// });
} else {
zTree.addNodes(zTree.getSelectedNodes()[0], {id:id, pId:0, name:newNode.name});
}
}
function removeTreeNode() { //删除
var nodes = zTree.getSelectedNodes();
if (nodes && nodes.length>0) {
if(confirm("确认删除 节点吗?")){
console.log('删除');
if (nodes[0].children && nodes[0].children.length > 0) {
var msg = "要删除的节点是父节点,如果删除将连同子节点一起删掉。\n\n请确认!";
if (confirm(msg)==true){
zTree.removeNode(nodes[0]);
alert("删除成功");
}
} else {
zTree.removeNode(nodes[0]);
alert("删除成功");
}
// $.ajax({
// type: "post",
// url: "url",
// async: true,
// dataType: "json",
// contentType: "application/json",
// data: JSON.stringify({
// "id": nodes[0].id
// }),
// success: function (data) {
// if (nodes[0].children && nodes[0].children.length > 0) {
// var msg = "要删除的节点是父节点,如果删除将连同子节点一起删掉。\n\n请确认!";
// if (confirm(msg)==true){
// zTree.removeNode(nodes[0]);
// alert("删除成功");
// }
// } else {
// zTree.removeNode(nodes[0]);
// alert("删除成功");
// }
// },
// error: function(){
// alert("请求失败");
// }
// });
}
}
}
function edit() { //编辑
var zTree = $.fn.zTree.getZTreeObj("treePhy");
var nodes = zTree.getSelectedNodes();
treeNode = nodes[0];
if (nodes.length == 0) {
alert("请先选择一个节点");
return;
}
zTree.editName(treeNode);
};
var zTree, rMenu;
$(document).ready(function(){
var zNodes =[];
// $.ajax({
// type: "post",
// url: "url",
// async: false,
// dataType: "json",
// contentType: "application/json",
// data: JSON.stringify({ }),
// success:function(data){
// if(data.code==0){
// var tree = data.data;
// for(var i=0,len=tree.length;i<len;i++){
// if(i==0){
// zNodes.push({
// id:tree[i].id,
// pId:tree[i].parentid,
// name:tree[i].name,
// open:true,
noR:true
// });
// }else{
// zNodes.push({
// id:tree[i].id,
// pId:tree[i].parentid,
// name:tree[i].name,
// });
// }
// }
// }
// }
// });
var zNodes=[//页面初始数据
{ id:1, pId:0, name:"智能照明系统", open:true},
{ id:11, pId:1, name:"大楼1", open:true},
{ id:111, pId:11, name:"楼层1-1"},
{ id:112, pId:11, name:"楼层1-2"},
{ id:12, pId:1, name:"大楼2", open:true},
{ id:121, pId:12, name:"楼层2-1"},
{ id:122, pId:12, name:"楼层2-2"},
]
$.fn.zTree.init($("#treePhy"), setting, zNodes);
zTree = $.fn.zTree.getZTreeObj("treePhy");
rMenu = $("#rMenu");
});
/*鼠标右击弹出事件 smartMenu部分*/
var MenuData = [
[{
text:"新增",
func:function() {//增加
addTreeNode();
}
},
{
text:"编辑",
func:function(){
edit();
}
}
],
[{
text:"删除",
func:function(){
removeTreeNode();
}
}]
];
$("#treePhy").smartMenu(MenuData);