rightClickMenu.html 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <!DOCTYPE html>
  2. <HTML>
  3. <HEAD>
  4. <TITLE> ZTREE DEMO - select menu</TITLE>
  5. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  6. <link rel="stylesheet" href="../../../css/demo.css" type="text/css">
  7. <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
  8. <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
  9. <script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>
  10. <script type="text/javascript" src="../../../js/jquery.ztree.excheck.js"></script>
  11. <script type="text/javascript" src="../../../js/jquery.ztree.exedit.js"></script>
  12. <SCRIPT type="text/javascript">
  13. <!--
  14. var setting = {
  15. view: {
  16. dblClickExpand: false
  17. },
  18. check: {
  19. enable: true
  20. },
  21. callback: {
  22. onRightClick: OnRightClick
  23. }
  24. };
  25. var zNodes = [
  26. {
  27. id: 1, name: "无右键菜单 1", open: true, noR: true,
  28. children: [
  29. {id: 11, name: "节点 1-1", noR: true},
  30. {id: 12, name: "节点 1-2", noR: true}
  31. ]
  32. },
  33. {
  34. id: 2, name: "右键操作 2", open: true,
  35. children: [
  36. {id: 21, name: "节点 2-1"},
  37. {id: 22, name: "节点 2-2"},
  38. {id: 23, name: "节点 2-3"},
  39. {id: 24, name: "节点 2-4"}
  40. ]
  41. },
  42. {
  43. id: 3, name: "右键操作 3", open: true,
  44. children: [
  45. {id: 31, name: "节点 3-1"},
  46. {id: 32, name: "节点 3-2"},
  47. {id: 33, name: "节点 3-3"},
  48. {id: 34, name: "节点 3-4"}
  49. ]
  50. }
  51. ];
  52. function OnRightClick(event, treeId, treeNode) {
  53. if (!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) {
  54. zTree.cancelSelectedNode();
  55. showRMenu("root", event.clientX, event.clientY);
  56. } else if (treeNode && !treeNode.noR) {
  57. zTree.selectNode(treeNode);
  58. showRMenu("node", event.clientX, event.clientY);
  59. }
  60. }
  61. function showRMenu(type, x, y) {
  62. $("#rMenu ul").show();
  63. if (type == "root") {
  64. $("#m_del").hide();
  65. $("#m_check").hide();
  66. $("#m_unCheck").hide();
  67. } else {
  68. $("#m_del").show();
  69. $("#m_check").show();
  70. $("#m_unCheck").show();
  71. }
  72. y += document.body.scrollTop;
  73. x += document.body.scrollLeft;
  74. rMenu.css({"top": y + "px", "left": x + "px", "visibility": "visible"});
  75. $("body").bind("mousedown", onBodyMouseDown);
  76. }
  77. function hideRMenu() {
  78. if (rMenu) rMenu.css({"visibility": "hidden"});
  79. $("body").unbind("mousedown", onBodyMouseDown);
  80. }
  81. function onBodyMouseDown(event) {
  82. if (!(event.target.id == "rMenu" || $(event.target).parents("#rMenu").length > 0)) {
  83. rMenu.css({"visibility": "hidden"});
  84. }
  85. }
  86. var addCount = 1;
  87. function addTreeNode() {
  88. hideRMenu();
  89. var newNode = {name: "增加" + (addCount++)};
  90. if (zTree.getSelectedNodes()[0]) {
  91. newNode.checked = zTree.getSelectedNodes()[0].checked;
  92. zTree.addNodes(zTree.getSelectedNodes()[0], newNode);
  93. } else {
  94. zTree.addNodes(null, newNode);
  95. }
  96. }
  97. function removeTreeNode() {
  98. hideRMenu();
  99. var nodes = zTree.getSelectedNodes();
  100. if (nodes && nodes.length > 0) {
  101. if (nodes[0].children && nodes[0].children.length > 0) {
  102. var msg = "要删除的节点是父节点,如果删除将连同子节点一起删掉。\n\n请确认!";
  103. if (confirm(msg) == true) {
  104. zTree.removeNode(nodes[0]);
  105. }
  106. } else {
  107. zTree.removeNode(nodes[0]);
  108. }
  109. }
  110. }
  111. function checkTreeNode(checked) {
  112. var nodes = zTree.getSelectedNodes();
  113. if (nodes && nodes.length > 0) {
  114. zTree.checkNode(nodes[0], checked, true);
  115. }
  116. hideRMenu();
  117. }
  118. function resetTree() {
  119. hideRMenu();
  120. $.fn.zTree.init($("#treeDemo"), setting, zNodes);
  121. }
  122. var zTree, rMenu;
  123. $(document).ready(function () {
  124. $.fn.zTree.init($("#treeDemo"), setting, zNodes);
  125. zTree = $.fn.zTree.getZTreeObj("treeDemo");
  126. rMenu = $("#rMenu");
  127. });
  128. //-->
  129. </SCRIPT>
  130. <style type="text/css">
  131. div#rMenu {
  132. position: absolute;
  133. visibility: hidden;
  134. top: 0;
  135. background-color: #555;
  136. text-align: left;
  137. padding: 2px;
  138. }
  139. div#rMenu ul li {
  140. margin: 1px 0;
  141. padding: 0 5px;
  142. cursor: pointer;
  143. list-style: none outside none;
  144. background-color: #DFDFDF;
  145. }
  146. </style>
  147. </HEAD>
  148. <BODY>
  149. <h1>右键菜单的实现</h1>
  150. <h6>[ 文件路径: super/rightClickMenu.html ]</h6>
  151. <div class="content_wrap">
  152. <div class="zTreeDemoBackground left">
  153. <ul id="treeDemo" class="ztree"></ul>
  154. </div>
  155. <div class="right">
  156. <ul class="info">
  157. <li class="title"><h2>实现方法说明</h2>
  158. <ul class="list">
  159. <li>利用 beforeRightClick / onRightClick 事件回调函数简单实现的右键菜单</li>
  160. <li class="highlight_red">Demo 中的菜单比较简陋,你完全可以配合其他自定义样式的菜单图层混合使用</li>
  161. </ul>
  162. </li>
  163. </ul>
  164. </div>
  165. </div>
  166. <div id="rMenu">
  167. <ul>
  168. <li id="m_add" onclick="addTreeNode();">增加节点</li>
  169. <li id="m_del" onclick="removeTreeNode();">删除节点</li>
  170. <li id="m_check" onclick="checkTreeNode(true);">Check节点</li>
  171. <li id="m_unCheck" onclick="checkTreeNode(false);">unCheck节点</li>
  172. <li id="m_reset" onclick="resetTree();">恢复zTree</li>
  173. </ul>
  174. </div>
  175. </BODY>
  176. </HTML>