forked from ColorlibHQ/AdminLTE
-
Notifications
You must be signed in to change notification settings - Fork 41
/
sidebarMenu.js
135 lines (120 loc) · 5.22 KB
/
sidebarMenu.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
(function ($) {
$.fn.sidebarMenu = function (options) {
options = $.extend({}, $.fn.sidebarMenu.defaults, options || {});
var $menu_ul = $(this);
var level = 0;
// target.addClass('nav');
// target.addClass('nav-list');
if (options.data) {
init($menu_ul, options.data, level);
}
else {
if (!options.url) return;
$.getJSON(options.url, options.param, function (data) {
init($menu_ul, data, level);
});
}
function init($menu_ul, data, level) {
$.each(data, function (i, item) {
//如果标签是isHeader
var $header = $('<li class="header"></li>');
if (item.isHeader !== null && item.isHeader === true) {
$header.append(item.text);
$menu_ul.append($header);
return;
}
//如果不是header
var li = $('<li class="treeview " data-level="' + level + '"></li>');
//a标签
var $a;
if (level > 0) {
$a = $('<a style="padding-left:' + (level * 20) + 'px"></a>');
} else {
$a = $('<a></a>');
}
//图标
var $icon = $('<i></i>');
$icon.addClass(item.icon);
//标题
var $title = $('<span class="title"></span>');
$title.addClass('menu-text').text(item.text);
$a.append($icon);
$a.append($title);
$a.addClass("nav-link");
var isOpen = item.isOpen;
if (isOpen === true) {
li.addClass("active");
}
if (item.children && item.children.length > 0) {
var pullSpan = $('<span class="pull-right-container"></span>');
var pullIcon = $('<i class="fa fa-angle-left pull-right"></i>');
pullSpan.append(pullIcon);
$a.append(pullSpan);
li.append($a);
var menus = $('<ul></ul>');
menus.addClass('treeview-menu');
if (isOpen === true) {
menus.css("display", "block");
menus.addClass("menu-open");
} else {
menus.css("display", "none");
}
init(menus, item.children, level + 1);
li.append(menus);
}
else {
if (item.targetType != null && item.targetType === "blank") //代表打开新页面
{
$a.attr("href", item.url);
$a.attr("target", "_blank");
}
else if (item.targetType != null && item.targetType === "ajax") { //代表ajax方式打开页面
$a.attr("href", item.url);
$a.addClass("ajaxify");
}
else if (item.targetType != null && item.targetType === "iframe-tab") {
item.urlType = item.urlType ? item.urlType : 'relative';
var href = 'addTabs({id:\'' + item.id + '\',title: \'' + item.text + '\',close: true,url: \'' + item.url + '\',urlType: \'' + item.urlType + '\'});';
$a.attr('onclick', href);
}
else if (item.targetType != null && item.targetType === "iframe") { //代表单iframe页面
$a.attr("href", item.url);
$a.addClass("iframeOpen");
$("#iframe-main").addClass("tab_iframe");
} else {
$a.attr("href", item.url);
$a.addClass("iframeOpen");
$("#iframe-main").addClass("tab_iframe");
}
$a.addClass("nav-link");
var badge = $("<span></span>");
// <span class="badge badge-success">1</span>
if (item.tip != null && item.tip > 0) {
badge.addClass("label").addClass("label-success").text(item.tip);
}
$a.append(badge);
li.append($a);
}
$menu_ul.append(li);
});
}
//另外绑定菜单被点击事件,做其它动作
$menu_ul.on("click", "li.treeview a", function () {
var $a = $(this);
if ($a.next().size() == 0) {//如果size>0,就认为它是可以展开的
if ($(window).width() < $.AdminLTE.options.screenSizes.sm) {//小屏幕
//触发左边菜单栏按钮点击事件,关闭菜单栏
$($.AdminLTE.options.sidebarToggleSelector).click();
}
}
});
};
$.fn.sidebarMenu.defaults = {
url: null,
param: null,
data: null,
isHeader: false
};
})(jQuery);
//sidebar - menu组件封装
//在页面上面直接调用sidebar - menu的方法