contextMenu.html 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  6. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  7. <title>右键菜单</title>
  8. <link rel="stylesheet" href="../../../assets/libs/layui/css/layui.css"/>
  9. <link rel="stylesheet" href="../../../assets/module/admin.css?v=315"/>
  10. <!--[if lt IE 9]>
  11. <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
  12. <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  13. <![endif]-->
  14. </head>
  15. <body>
  16. <!-- 加载动画 -->
  17. <div class="page-loading">
  18. <div class="ball-loader">
  19. <span></span><span></span><span></span><span></span>
  20. </div>
  21. </div>
  22. <!-- 正文开始 -->
  23. <div class="layui-fluid ">
  24. <div class="layui-row layui-col-space15">
  25. <div class="layui-col-xs12 layui-col-sm4 layui-col-md3">
  26. <div class="layui-card">
  27. <div class="layui-card-header">DIV内鼠标右键菜单</div>
  28. <div class="layui-card-body text-center" id="btnCtxMenu" style="padding: 97px 15px;">
  29. 请在此区域内点击鼠标右键
  30. </div>
  31. </div>
  32. <div class="layui-card">
  33. <div class="layui-card-header">按钮点击显示无限级菜单</div>
  34. <div class="layui-card-body text-center">
  35. <button id="btnCtxMenu2" class="layui-btn">请点击我</button>
  36. </div>
  37. </div>
  38. </div>
  39. <div class="layui-col-xs12 layui-col-sm8 layui-col-md9">
  40. <div class="layui-card">
  41. <div class="layui-card-header">表格行鼠标右键菜单</div>
  42. <div class="layui-card-body">
  43. <table id="ctxMenuTable" lay-filter="ctxMenuTable"></table>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. <blockquote class="layui-elem-quote" style="background: #fff;margin-top: 15px;">
  49. 全局鼠标右键菜单,请在页面任意位置点击鼠标右键。
  50. </blockquote>
  51. </div>
  52. <!-- js部分 -->
  53. <script type="text/javascript" src="../../../assets/libs/layui/layui.js"></script>
  54. <script type="text/javascript" src="../../../assets/js/common.js?v=315"></script>
  55. <script>
  56. layui.use(['layer', 'contextMenu', 'table', 'tableX', 'util'], function () {
  57. var $ = layui.jquery;
  58. var layer = layui.layer;
  59. var contextMenu = layui.contextMenu;
  60. var table = layui.table;
  61. var tableX = layui.tableX;
  62. var util = layui.util;
  63. // 重写右键菜单
  64. contextMenu.bind('#btnCtxMenu', [{
  65. name: '右键菜单一',
  66. click: function () {
  67. layer.msg('点击了右键菜单一', {icon: 1});
  68. }
  69. }, {
  70. name: '右键菜单二',
  71. click: function () {
  72. layer.msg('点击了右键菜单二', {icon: 1});
  73. }
  74. }, {
  75. icon: 'layui-icon layui-icon-more-vertical',
  76. name: '右键菜单三',
  77. subs: [{
  78. name: '右键子菜单一',
  79. click: function () {
  80. layer.msg('点击了右键子菜单一', {icon: 1});
  81. }
  82. }, {
  83. name: '右键子菜单二',
  84. click: function () {
  85. layer.msg('点击了右键子菜单二', {icon: 1});
  86. }
  87. }, {
  88. name: '右键子菜单三',
  89. subs: [{
  90. name: '右键三级菜单一',
  91. click: function () {
  92. layer.msg('点击了右键三级菜单一', {icon: 1});
  93. }
  94. }, {
  95. name: '右键三级菜单二',
  96. click: function () {
  97. layer.msg('点击了右键三级菜单二', {icon: 1});
  98. }
  99. }]
  100. }]
  101. }]);
  102. // 重写右键菜单
  103. contextMenu.bind('html', [{
  104. icon: 'layui-icon layui-icon-refresh',
  105. name: '刷新子页面',
  106. click: function () {
  107. location.reload();
  108. }
  109. }, {
  110. name: '刷新主框架',
  111. click: function () {
  112. top.location.reload();
  113. },
  114. hr: true
  115. }, {
  116. icon: 'layui-icon layui-icon-snowflake',
  117. name: '菜单项一',
  118. click: function () {
  119. layer.msg('点击了菜单一', {icon: 1});
  120. }
  121. }, {
  122. icon: 'layui-icon layui-icon-location',
  123. name: '菜单项二',
  124. click: function () {
  125. layer.msg('点击了菜单二', {icon: 1});
  126. }
  127. }, {
  128. name: '菜单项三',
  129. subs: [{
  130. name: '子菜单一',
  131. click: function () {
  132. layer.msg('点击了子菜单一', {icon: 1});
  133. }
  134. }, {
  135. name: '子菜单二',
  136. click: function () {
  137. layer.msg('点击了子菜单二', {icon: 1});
  138. }
  139. }, {
  140. name: '子菜单三',
  141. subs: [{
  142. name: '三级菜单一',
  143. click: function () {
  144. layer.msg('点击了三级菜单一', {icon: 1});
  145. }
  146. }, {
  147. name: '三级菜单二',
  148. subs: [{
  149. name: '四级菜单一',
  150. click: function () {
  151. layer.msg('点击了四级菜单一', {icon: 1});
  152. }
  153. }, {
  154. name: '四级菜单二',
  155. click: function () {
  156. layer.msg('点击了四级菜单二', {icon: 1});
  157. }
  158. }]
  159. }]
  160. }]
  161. }, {
  162. name: '菜单四',
  163. click: function () {
  164. layer.msg('点击了菜单四', {icon: 1});
  165. }
  166. }]);
  167. // 直接使用show方法
  168. $('#btnCtxMenu2').click(function (e) {
  169. var x = $(this).offset().left;
  170. var y = $(this).offset().top + $(this).outerHeight();
  171. contextMenu.show([{
  172. name: '按钮菜单一',
  173. click: function () {
  174. layer.msg('点击了按钮菜单一', {icon: 1});
  175. }
  176. }, {
  177. name: '按钮菜单二',
  178. click: function () {
  179. layer.msg('点击了按钮菜单二', {icon: 1});
  180. }
  181. }, {
  182. icon: 'layui-icon layui-icon-more-vertical',
  183. name: '按钮菜单三',
  184. subs: [{
  185. name: '按钮子菜单一',
  186. click: function () {
  187. layer.msg('点击了按钮子菜单一', {icon: 1});
  188. }
  189. }, {
  190. name: '按钮子菜单二',
  191. click: function () {
  192. layer.msg('点击了按钮子菜单二', {icon: 1});
  193. }
  194. }, {
  195. name: '按钮子菜单三',
  196. subs: [{
  197. name: '按钮三级菜单一',
  198. click: function () {
  199. layer.msg('点击了按钮三级菜单一', {icon: 1});
  200. }
  201. }, {
  202. name: '按钮三级菜单二',
  203. click: function () {
  204. layer.msg('点击了按钮三级菜单二', {icon: 1});
  205. }
  206. }]
  207. }]
  208. }], x, y);
  209. if (e !== void 0) {
  210. e.preventDefault();
  211. e.stopPropagation();
  212. }
  213. });
  214. // 表格行右键
  215. var insTb3 = table.render({
  216. elem: '#ctxMenuTable',
  217. url: '../../../json/user.json',
  218. page: true,
  219. cellMinWidth: 100,
  220. cols: [[
  221. {type: 'numbers', title: '#'},
  222. {field: 'nickName', title: '用户名', sort: true},
  223. {field: 'sex', title: '性别', sort: true},
  224. {field: 'phone', title: '手机号', sort: true},
  225. {
  226. field: 'createTime', templet: function (d) {
  227. return util.toDateString(d.createTime);
  228. }, title: '创建时间', sort: true
  229. }
  230. ]],
  231. done: function () {
  232. // 绑定鼠标右键
  233. tableX.bindCtxMenu('ctxMenuTable', [{
  234. icon: 'layui-icon layui-icon-tips',
  235. name: '查看详情',
  236. click: function (d) {
  237. layer.msg('点击了详情,userId:' + d.userId);
  238. }
  239. }, {
  240. icon: 'layui-icon layui-icon-edit',
  241. name: '修改用户',
  242. click: function (d) {
  243. layer.msg('点击了修改,userId:' + d.userId);
  244. }
  245. }, {
  246. icon: 'layui-icon layui-icon-unlink',
  247. name: '冻结用户',
  248. click: function (d) {
  249. layer.msg('点击了冻结,userId:' + d.userId);
  250. }
  251. }, {
  252. icon: 'layui-icon layui-icon-close text-danger',
  253. name: '<span class="text-danger">删除用户</span>',
  254. click: function (d) {
  255. layer.msg('点击了删除,userId:' + d.userId);
  256. }
  257. }]);
  258. }
  259. });
  260. });
  261. </script>
  262. </body>
  263. </html>