LayUI 后台界面Tab選項卡--右鍵關閉其他Tab和全部Tab選項卡


1.前端代碼

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <link href="~/Content/layui/css/layui.css" rel="stylesheet"/>

    <title>LayUI后台</title>
    <style>
        .rightmenu { position: absolute; width: 80px; z-index: 9999; display: none; background-color: #fff; padding: 2px; color: #333; border: 1px solid #eee; border-radius: 2px; cursor: pointer; }
        .rightmenu li { text-align: center; display: block; height: 25px; line-height: 25px; }
        .rightmenu li:hover { background-color: #666; color: #fff; }
    </style>
</head>
<body>
    <body class="layui-layout-body">
        <div class="layui-layout layui-layout-admin">
            <div class="layui-header">
                <div class="layui-logo">layui 后台布局</div>
                <!-- 頭部區域(可配合layui已有的水平導航) -->
                <ul class="layui-nav layui-layout-left">
                    <li class="layui-nav-item"><a href="">控制台</a></li>
                    <li class="layui-nav-item"><a href="">商品管理</a></li>
                    <li class="layui-nav-item"><a href="">用戶</a></li>
                    <li class="layui-nav-item">
                        <a href="javascript:;">其它系統</a>
                        <dl class="layui-nav-child">
                            <dd><a href="">郵件管理</a></dd>
                            <dd><a href="">消息管理</a></dd>
                            <dd><a href="">授權管理</a></dd>
                        </dl>
                    </li>
                </ul>
                <ul class="layui-nav layui-layout-right">
                    <li class="layui-nav-item">
                        <a href="javascript:;">
                            <img src="http://t.cn/RCzsdCq" class="layui-nav-img">
                            張三
                        </a>
                        <dl class="layui-nav-child">
                            <dd><a href="">基本資料</a></dd>
                            <dd><a href="">安全設置</a></dd>
                        </dl>
                    </li>
                    <li class="layui-nav-item"><a href="~/Student2/LogOut">退了</a></li>
                </ul>
            </div>

            <div class="layui-side layui-bg-black">
                <div class="layui-side-scroll">
                    <!-- 左側導航區域(可配合layui已有的垂直導航) -->
                    <ul class="layui-nav layui-nav-tree" lay-filter="test">
                        <li class="layui-nav-item layui-nav-itemed">
                            <a class="" href="javascript:;">所有商品</a>
                            <dl class="layui-nav-child">
                                <dd><a class="site-active" tab-name="學生列表A" tab-url="/Demo/StudentTab" tab-layid="11" href="javascript:;">學生列表A</a></dd>
                                <dd><a class="site-active" tab-name="學生列表B" tab-url="/Student2/Student2Tab" tab-layid="22" href="javascript:;">學生列表B</a></dd>
                                <dd><a class="site-active" tab-name="學生列表C" tab-url="/Student2/Student2Tab" tab-layid="33" href="javascript:;">學生列表C</a></dd>
                                <dd><a class="site-active" tab-name="學生列表D" tab-url="/Student2/Student2Tab" tab-layid="44" href="javascript:;">學生列表D</a></dd>
                                <dd><a class="site-active" tab-name="學生列表E" tab-url="/Student2/Student2Tab" tab-layid="55" href="javascript:;">學生列表E</a></dd>
                            </dl>
                        </li>
                        <li class="layui-nav-item">
                            <a href="javascript:;">解決方案</a>
                            <dl class="layui-nav-child">
                                <dd><a href="javascript:;">列表一</a></dd>
                                <dd><a href="javascript:;">列表二</a></dd>
                                <dd><a href="">超鏈接</a></dd>
                            </dl>
                        </li>
                        <li class="layui-nav-item"><a href="">雲市場</a></li>
                        <li class="layui-nav-item"><a href="">發布商品</a></li>
                    </ul>
                </div>
            </div>
            

            <div class="layui-tab" lay-filter="demo" lay-allowclose="true" style="margin-left: 200px;">
                <ul class="layui-tab-title">
                </ul>
                <ul class="rightmenu">
                    <li data-type="closeOther">關閉其他</li>
                    <li data-type="closeall">關閉所有</li>
                </ul>
                <div class="layui-tab-content"></div>
            </div>

            <div class="layui-body">
                <!-- 內容主體區域 -->
                <div layui-body style="padding: 15px;">
                    <div class="layui-tab" lay-allowClose="true" lay-filter="tabList">
                        <ul class="layui-tab-title">
                        </ul>
                        <div class="layui-tab-content">


                        </div>
                    </div>
                </div>

            </div>




            <div class="layui-footer">
                <!-- 底部固定區域 -->
                © layui.com - 底部固定區域
            </div>
        </div>
        <script src="~/Content/layui/layui.js"></script>
        <script>
            //JavaScript代碼區域
           
            layui.use(['element', 'jquery'], function () {
                var element = layui.element,
                    $ = layui.jquery;

                var deleteIndex;//全局變量

                element.on('tab(tabList)', function(data){
                    deleteIndex=$(this).attr("lay-id");
                });

                //觸發事件
                var active = {
                    tabAdd: function (name, url, layid) {
                        element.tabAdd('tabList', {
                            title: name //'選項卡的標題'
                            , content: '<iframe id="iframeMain" style="width: 100%" ; height="100%" ; scrolling="no" frameborder="no" src="' + url + '"></iframe>'//'選項卡的內容' //支持傳入html
                            , id: layid//'選項卡標題的lay-id屬性值'
                        });
                        CustomRightClick(layid);   //給tab綁定右擊事件
                        FrameWH();
                    },
                    tabChange: function (layid) {
                        element.tabChange('tabList', layid);
                    },
                    tabDelete: function (layid) {
                        element.tabDelete('tabList', layid);
                    },
                    tabDeleteAll: function(ids) {
                        $.each(ids,
                            function(i, item) {
                                element.tabDelete("tabList", item);
                            });
                    }
                }


                //當點擊有siteactive屬性的標簽時,即左側菜單欄中內容 ,觸發點擊事件
                $('.site-active').on("click", function () {
                    var dataid = $(this);
                    var name = dataid.attr("tab-name");
                    var url = dataid.attr("tab-url");
                    var tab_layid = dataid.attr("tab-layid");


                    //1、 判斷tab-layid=layid的tab頁是否打開
                    if ($(".layui-tab-title li[lay-id]").length <= 0) { //1.1 初始狀態:1個Tab頁也沒有打開
                        active.tabAdd(name, url, tab_layid); //打開tab頁
                        active.tabChange(tab_layid)//轉到該tab頁
                    } else { //1.2   判斷該Tab頁是否已打開
                        var isData = false; //初始化一個標志,為false說明未打開該tab項 為true則說明已有
                        $.each($(".layui-tab-title li[lay-id]"),
                            function() {

                                //如果點擊左側菜單欄所傳入的id 在右側tab項中的lay-id屬性可以找到,則說明該tab項已經打開
                                if ($(this).attr("lay-id") == tab_layid) {
                                    isData = true;

                                }
                            });
                        if (isData == false) {
                            //標志為false 新增一個tab項
                            active.tabAdd(name, url, tab_layid); //1.2.1  該Tab頁未打開,則打開該tab頁
                        }

                        active.tabChange(tab_layid)//1.2.2 轉到該tab頁
                    }


                    FrameWH();  //計算ifram層的大小

                });

                function CustomRightClick(id) {
                    //取消右鍵  rightmenu屬性開始是隱藏的 ,當右擊的時候顯示,左擊的時候隱藏
                    $('.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); //在右鍵菜單中的標簽綁定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;
                    });
                }

                $(".rightmenu li").click(function() {
                    if ($(this).attr("data-type") == "closeOther") {//關閉其他
                        $.each($(".layui-tab-title li[lay-id]"), function () {
                            //如果點擊左側菜單欄所傳入的id 在右側tab項中的lay-id屬性可以找到,則說明該tab項已經打開
                            if ($(this).attr("lay-id")!=deleteIndex) {
                                console.log("即將刪除lay-id"+$(this).attr("lay-id"));
                                active.tabDelete($(this).attr("lay-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();
                });



                function FrameWH() { //計算ifram層的大小
                    var h = $(window).height() - 41 - 10 - 60 - 10 - 44 - 10;
                    $("iframe").css("height", h + "px");
                }

                $(window).resize(function() {
                    FrameWH();
                });

            });
        </script>
    </body>
</body>
</html>

2.界面演示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM