rightClickMenu.html 5.0 KB

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