- 前言
基于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(); }) |