layui 操作Tab

  • 前言

    基于layui的tab操作,此文仅作参考,学习之用

  1. 首先下载layui后台框架
  2. 打开后台代码文件

    在内容部分插入以下代码

    

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();
         })

转载于:https://www.cnblogs.com/sword082419/p/9316806.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值