51zTree - 右键菜单的实现

简介: 51zTree - 右键菜单的实现

效果图:

代码:

<!DOCTYPE html>
<HTML>
<HEAD>
  <TITLE> ZTREE DEMO - select menu</TITLE>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <link rel="stylesheet" href="../../../css/demo.css" type="text/css">
  <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
  <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
  <script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>
  <script type="text/javascript" src="../../../js/jquery.ztree.excheck.js"></script>
  <script type="text/javascript" src="../../../js/jquery.ztree.exedit.js"></script>
  <SCRIPT type="text/javascript">
    <!--
    var setting = {
      view: {
        dblClickExpand: false
      },
      check: {
        enable: true
      },
      callback: {
        onRightClick: OnRightClick
      }
    };
    var zNodes =[
      {id:1, name:"无右键菜单 1", open:true, noR:true,
        children:[
             {id:11, name:"节点 1-1", noR:true},
             {id:12, name:"节点 1-2", noR:true}
        ]},
      {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) {
      $("#rMenu ul").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;
    function addTreeNode() {
      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);
      }
    }
    function removeTreeNode() {
      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]);
        }
      }
    }
    function checkTreeNode(checked) {
      var nodes = zTree.getSelectedNodes();
      if (nodes && nodes.length>0) {
        zTree.checkNode(nodes[0], checked, true);
      }
      hideRMenu();
    }
    function resetTree() {
      hideRMenu();
      $.fn.zTree.init($("#treeDemo"), setting, zNodes);
    }
    var zTree, rMenu;
    $(document).ready(function(){
      $.fn.zTree.init($("#treeDemo"), setting, zNodes);
      zTree = $.fn.zTree.getZTreeObj("treeDemo");
      rMenu = $("#rMenu");
    });
    //-->
  </SCRIPT>
  <style type="text/css">
div#rMenu {position:absolute; visibility:hidden; top:0; background-color: #555;text-align: left;padding: 2px;}
div#rMenu ul li{
  margin: 1px 0;
  padding: 0 5px;
  cursor: pointer;
  list-style: none outside none;
  background-color: #DFDFDF;
}
  </style>
 </HEAD>
<BODY>
<h1>右键菜单的实现</h1>
<h6>[ 文件路径: super/rightClickMenu.html ]</h6>
<div class="content_wrap">
  <div class="zTreeDemoBackground left">
    <ul id="treeDemo" class="ztree"></ul>
  </div>
  <div class="right">
    <ul class="info">
      <li class="title"><h2>实现方法说明</h2>
        <ul class="list">
        <li>利用 beforeRightClick / onRightClick 事件回调函数简单实现的右键菜单</li>
        <li class="highlight_red">Demo 中的菜单比较简陋,你完全可以配合其他自定义样式的菜单图层混合使用</li>
        </ul>
      </li>
    </ul>
  </div>
</div>
<div id="rMenu">
  <ul>
    <li id="m_add" onclick="addTreeNode();">增加节点</li>
    <li id="m_del" onclick="removeTreeNode();">删除节点</li>
    <li id="m_check" onclick="checkTreeNode(true);">Check节点</li>
    <li id="m_unCheck" onclick="checkTreeNode(false);">unCheck节点</li>
    <li id="m_reset" onclick="resetTree();">恢复zTree</li>
  </ul>
</div>
</BODY>
</HTML>
目录
相关文章
48zTree - 下拉菜单
48zTree - 下拉菜单
35 0
|
6月前
|
JavaScript
原生JS实现全选、全不选
原生JS实现全选、全不选
|
7月前
|
JavaScript
|
7月前
|
JavaScript 前端开发
JS单选全选全不选
JS单选全选全不选
42 0
21zTree - 用 zTree 方法 勾选 checkbox
21zTree - 用 zTree 方法 勾选 checkbox
57 0
42zTree - 添加自定义控件
42zTree - 添加自定义控件
115 0
26zTree - 用 zTree 方法 勾选 radio
26zTree - 用 zTree 方法 勾选 radio
45 0
15zTree - 其他鼠标事件监听
15zTree - 其他鼠标事件监听
42 0
|
JSON 数据格式
08zTree - 超链接显示
08zTree - 超链接显示
51 0
|
JavaScript
js的全选和反选的具体实现
js的全选和反选的具体实现
49 0