- 前言
基于layui的tab操作,此文仅作参考,学习之用
- 首先下载layui后台框架
- 打开后台代码文件
在内容部分插入以下代码
1
2
3
4
|
<
div
class="layui-tab" lay-filter="demo" lay-allowclose="true">
<
ul
class="layui-tab-title"></
ul
>
<
div
class="layui-tab-content"></
div
>
</
div
>
|
3.编写js代码
引用js:layui.all.js 或者 layui.js,这两种只是写法的区别,功能都一样,具体写法参考官方文档即可
4.增加触发事件
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
|
var
active = {
tabAdd:
function
(url, id) {
//新增一个Tab项
element.tabAdd(
'demo'
, {
title:
'新选项'
+ (Math.random() * 1000 | 0)
//用于演示
, content:
'<iframe data-frameid="'
+id+
'" frameborder="0" name="content" scrolling="no" width="100%" src="'
+ url +
'"></iframe>'
, id: id
//实际使用一般是规定好的id,这里以时间戳模拟下
})
CustomRightClick(id);
//绑定右键菜单
FrameWH();
//计算框架高度
}
, tabChange:
function
(id) {
//切换到指定Tab项
element.tabChange(
'demo'
, id);
//切换到:用户管理
$(
"iframe[data-frameid='"
+id+
"']"
).attr(
"src"
,$(
"iframe[data-frameid='"
+id+
"']"
).attr(
"src"
))
//切换后刷新框架
}
, tabDelete:
function
(id) {
element.tabDelete(
"demo"
, id);
//删除
}
, tabDeleteAll:
function
(ids) {
//删除所有
$.each(ids,
function
(i,item) {
element.tabDelete(
"demo"
, item);
})
}
};
|
当然在此之前不能忘记需要载入相应对象
1
2
3
|
var
$ = jQuery = layui.jquery;
var
element = layui.element;
//Tab的切换功能,切换事件监听等,需要依赖element模块
var
layer = layui.layer;
|
5.触发代码完成后,关联触发条件,我的是左侧导航点击触发,因为重复触发,不能一直打开新的,所以写了一些判断
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//结合菜单展示内容
$(
".layui-side-scroll a"
).click(
function
() {
var
dataid = $(
this
);
if
($(
".layui-tab-title li[lay-id]"
).length <= 0) {
active.tabAdd(dataid.attr(
"data-url"
), dataid.attr(
"data-id"
));
}
else
{
var
isData =
false
;
$.each($(
".layui-tab-title li[lay-id]"
),
function
() {
if
($(
this
).attr(
"lay-id"
) == dataid.attr(
"data-id"
)) {
isData =
true
;
}
})
if
(isData ==
false
) {
active.tabAdd(dataid.attr(
"data-url"
), dataid.attr(
"data-id"
));
}
}
active.tabChange(dataid.attr(
"data-id"
));
})
|
6.为了效果更好一点,我在tab标签上增加了右键功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//绑定右键菜单
function
CustomRightClick(id) {
//取消右键
$(
'.layui-tab-title li'
).on(
'contextmenu'
,
function
() {
return
false
; })
$(
'.layui-tab-title,.layui-tab-title li'
).click(
function
() {
$(
'.rightmenu'
).hide();
});
//桌面点击右击
$(
'.layui-tab-title li'
).on(
'contextmenu'
,
function
(e) {
var
popupmenu = $(
".rightmenu"
);
popupmenu.find(
"li"
).attr(
"data-id"
,id);
l = ($(document).width() - e.clientX) < popupmenu.width() ? (e.clientX - popupmenu.width()) : e.clientX;
t = ($(document).height() - e.clientY) < popupmenu.height() ? (e.clientY - popupmenu.height()) : e.clientY;
popupmenu.css({ left: l, top: t }).show();
//alert("右键菜单")
return
false
;
});
}
|
下面是右键的html代码
1
2
3
4
|
<
ul
class="rightmenu">
<
li
data-type="closethis">关闭当前</
li
>
<
li
data-type="closeall">关闭所有</
li
>
</
ul
>
|
7.右键菜单有了,就需要给右键添加功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$(
".rightmenu li"
).click(
function
() {
if
($(
this
).attr(
"data-type"
) ==
"closethis"
) {
active.tabDelete($(
this
).attr(
"data-id"
))
}
else
if
($(
this
).attr(
"data-type"
) ==
"closeall"
) {
var
tabtitle = $(
".layui-tab-title li"
);
var
ids =
new
Array();
$.each(tabtitle,
function
(i) {
ids[i] = $(
this
).attr(
"lay-id"
);
})
active.tabDeleteAll(ids);
}
$(
'.rightmenu'
).hide();
})
|
8.完成后,我们还需要计算iframe的高度,因为自动高度,会导致iframe挤到一起
1
2
3
4
5
6
7
8
|
function
FrameWH() {
var
h = $(window).height() -41- 10 - 60 -10-44 -10;
$(
"iframe"
).css(
"height"
,h+
"px"
);
}
$(window).resize(
function
() {
FrameWH();
})
|