ztree

公司项目需要用到ztree,所以花了一天时间看了ztree的api做了一个项目需要用到的demo

1安装

去到ztree官网下载https://gitee.com/zTree/zTree_v3


2需要用到的包

require('./ztree/jquery.ztree.all.min')
require('./ztree/jquery.ztree.core.min')
require('./ztree/jquery.ztree.excheck.min')
require('./ztree/jquery.ztree.exedit.min')
require('./ztree/jquery.ztree.exhide.min')

3html代码

<ul id="treeDemo" class="ztree"></ul>
在原来的基础上做了一个右键编辑菜单
<div class="my-menu" id="Menu">
<div class="menu-item" data-index="1">
  添加文件
</div>
<div class="menu-item" data-index="2">
  删除文件
</div>
<div class="menu-item" data-index="3" οnclick="rename()">
  重命名
</div>
<div class="menu-item" data-index="4">
  取消
</div>
</div>

4js代码

var setting = {
  view: {
    dblClickExpand: false,
  },
  edit: {
    enable: false,
    renameTitle: "编辑节点名称"
  },
  callback: {
    onRightClick: OnRightClick,
    onDblClick: zTreeOnDblClick
  }
};

var zNodes =[
  {id:2, name:"右键操作 2", open:true,
    children:[
      {id:21, name:"节点 2-1"},
      {id:22, name:"节点 2-2"},
      {id:23, name:"节点 2-3"},
      {id:24, name:"节点 2-4"}
    ]},
  {id:3, name:"右键操作 3", open:true,
    children:[
      {id:31, name:"节点 3-1"},
      {id:32, name:"节点 3-2"},
      {id:33, name:"节点 3-3"},
      {id:34, name:"节点 3-4"}
    ]}
];

function OnRightClick(event, treeId, treeNode) {
  if (!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) {
    zTree.cancelSelectedNode();
    showRMenu("root", event.clientX, event.clientY);
  } else if (treeNode && !treeNode.noR) {
    zTree.selectNode(treeNode);
    showRMenu("node", event.clientX, event.clientY);
  }
}

function showRMenu(type, x, y) {
  $("#Menu").show();
  if (type=="root") {
    $("#m_del").hide();
    $("#m_check").hide();
    $("#m_unCheck").hide();
  } else {
    $("#m_del").show();
    $("#m_check").show();
    $("#m_unCheck").show();
  }

  y += document.body.scrollTop;
  x += document.body.scrollLeft;
  rMenu.css({"top":y+"px", "left":x+"px", "visibility":"visible"});

  $("body").bind("mousedown", onBodyMouseDown);
}
function hideRMenu() {
  if (rMenu) rMenu.css({"visibility": "hidden"});
  $("body").unbind("mousedown", onBodyMouseDown);
}
function onBodyMouseDown(event){
  if (!(event.target.id

      == "rMenu" || $(event.target).parents("#rMenu").length>0)) {
    rMenu.css({"visibility" : "hidden"});
  }
}
var addCount = 1;
//增加
window.addTreeNode = function(){
  hideRMenu();
  var newNode = { name:"增加" + (addCount++)};
  if (zTree.getSelectedNodes()[0]) {
    newNode.checked = zTree.getSelectedNodes()[0].checked;
    zTree.addNodes(zTree.getSelectedNodes()[0], newNode);
  } else {
    zTree.addNodes(null, newNode);
  }
}
//删除
window.removeTreeNode = function(){
  hideRMenu();
  var nodes = zTree.getSelectedNodes();
  if (nodes && nodes.length>0) {
    if (nodes[0].children && nodes[0].children.length > 0) {
      var msg = "要删除的节点是父节点,如果删除将连同子节点一起删掉。\n\n请确认!";
      if (confirm(msg)==true){
        zTree.removeNode(nodes[0]);
      }
    } else {
      zTree.removeNode(nodes[0]);
    }
  }
}
//改名
window.rename=function(){
  hideRMenu();
  var nodes = zTree.getSelectedNodes(),
    treeNode = nodes[0];
  if (nodes.length == 0) {
    alert("请先选择一个对象");
    return;
  }
  zTree.editName(treeNode);
}
//双击子节点改名
function zTreeOnDblClick(event, treeId, treeNode) {
  hideRMenu();

  var nodes = zTree.getSelectedNodes(),
    treeNode = nodes[0];
  if (nodes.length == 0) {
    alert("请先选择一个对象");
    return;
  }
  zTree.editName(treeNode);
};

var zTree, rMenu;
$(document).ready(function(){
  $.fn.zTree.init($("#treeDemo"), setting, zNodes);
  zTree = $.fn.zTree.getZTreeObj("treeDemo");
  rMenu = $("#Menu");
  $(document).bind("click",function(e){
    $('#Menu').hide()
    return;
  });
  $('#Menu').bind("mousedown",function(event){
    event.stopPropagation();//重点,需要防止冒泡
    //改名代码放到了html代码里,因为遇到一个小bug
    if(event.target.dataset['index']==1){
      addTreeNode()
    }
    if(event.target.dataset['index']==2){
      removeTreeNode()
    }
    if(event.target.dataset['index']==4){
      $('#Menu').hide()
    }
  });
});

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值