sidebarMenu.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. (function ($) {
  2. $.fn.sidebarMenu = function (options) {
  3. options = $.extend({}, $.fn.sidebarMenu.defaults, options || {});
  4. var target = $(this);
  5. var level = 0;
  6. // target.addClass('nav');
  7. // target.addClass('nav-list');
  8. if (options.data) {
  9. init(target, options.data, level);
  10. }
  11. else {
  12. if (!options.url) return;
  13. $.getJSON(options.url, options.param, function (data) {
  14. init(target, data,level);
  15. });
  16. }
  17. function init(target, data,level) {
  18. $.each(data, function (i, item) {
  19. //如果标签是isHeader
  20. var header = $('<li class="header"></li>');
  21. if (item.isHeader != null && item.isHeader === true) {
  22. header.append(item.text);
  23. target.append(header);
  24. return;
  25. }
  26. //如果不是header
  27. var li = $('<li class="treeview " data-level="' + level + '"></li>');
  28. var a;
  29. if (level > 0) {
  30. a = $('<a style="padding-left:' + (level * 20) + 'px"></a>');
  31. } else {
  32. a = $('<a></a>');
  33. }
  34. var icon = $('<i></i>');
  35. icon.addClass(item.icon);
  36. var isOpen = item.isOpen;
  37. var text = $(' <span class="title"></span>');
  38. text.addClass('menu-text').text(item.text);
  39. a.append(icon);
  40. a.append(text);
  41. a.addClass("nav-link");
  42. if (isOpen === true) {
  43. li.addClass("active");
  44. }
  45. if (item.children && item.children.length > 0) {
  46. ;
  47. var pullSpan = $('<span class="pull-right-container"></span>');
  48. var pullIcon = $('<i class="fa fa-angle-left pull-right"></i>');
  49. pullSpan.append(pullIcon);
  50. a.append(pullSpan);
  51. li.append(a);
  52. var menus = $('<ul></ul>');
  53. menus.addClass('treeview-menu');
  54. if (isOpen===true) {
  55. menus.css("display", "block");
  56. menus.addClass("menu-open");
  57. } else {
  58. menus.css("display", "none");
  59. }
  60. init(menus, item.children,level+1);
  61. li.append(menus);
  62. }
  63. else {
  64. if (item.targetType != null && item.targetType === "blank") //代表打开新页面
  65. {
  66. a.attr("href", item.url);
  67. a.attr("target", "_blank");
  68. }
  69. else if (item.targetType != null && item.targetType === "ajax") { //代表ajax方式打开页面
  70. a.attr("href", item.url);
  71. a.addClass("ajaxify");
  72. }
  73. else if (item.targetType != null && item.targetType === "iframe-tab") {
  74. var href = 'addTabs({id:\'' + item.id + '\',title: \'' + item.text + '\',close: true,url: \'' + item.url + '\'});';
  75. a.attr('onclick', href);
  76. }
  77. else if (item.targetType != null && item.targetType === "iframe") { //代表单iframe页面
  78. a.attr("href", item.url);
  79. a.addClass("iframeOpen");
  80. $("#iframe-main").addClass("tab_iframe");
  81. } else {
  82. a.attr("href", item.url);
  83. a.addClass("iframeOpen");
  84. $("#iframe-main").addClass("tab_iframe");
  85. }
  86. a.addClass("nav-link");
  87. var badge = $("<span></span>");
  88. // <span class="badge badge-success">1</span>
  89. if (item.tip != null && item.tip > 0) {
  90. badge.addClass("label").addClass("label-success").text(item.tip);
  91. }
  92. a.append(badge);
  93. li.append(a);
  94. }
  95. target.append(li);
  96. });
  97. }
  98. }
  99. $.fn.sidebarMenu.defaults = {
  100. url: null,
  101. param: null,
  102. data: null
  103. };
  104. })(jQuery);
  105. //sidebar - menu组件封装
  106. //在页面上面直接调用sidebar - menu的方法