zoukankan      html  css  js  c++  java
  • 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();
            })
  • 相关阅读:
    SAP Fiori Elements Object Page页面渲染原理
    使用SAP CRM中间件从ERP下载plant到CRM
    SAP ABAP数据库表字段checktable的实现原理
    使用SAP CRM中间件从ERP下载Customer的错误消息:Distribution channel is not allowed for sales organization
    使用SAP CRM中间件从ERP下载Customer的错误消息:Customer classification does not exist
    SAP CRM中间件Request download的警告信息:message Object is in status Wait
    SAP CRM中间件Request download的警告信息:Form of address 0001 not designated for organization
    使用SAP CRM中间件下载customer的错误消息:Number not in interval XXX – XXX
    使用SAP CRM中间件从ERP下载plant到CRM
    Flink实例(十六):FLINK 异步IO (一)简介
  • 原文地址:https://www.cnblogs.com/sword082419/p/9316806.html
Copyright © 2011-2022 走看看