Layui 菜单与选项卡绑定

描述:左侧菜单menu与右边选项卡tab绑定,点击menu,右边的tab就在iframe展示,反过来,当切换相应的tab时,左边的menu就对应的展开,接下来,我们来实现这个效果。

左边菜单

菜单与选项卡选项互相绑定

$(function(){
    layui.use('element', function(){
        var element = layui.element;
        var $ = layui.jquery;

        // 左侧菜单dd标签点击事件,.huan-menu为每个dd标签的class
        $("body").on("click", ".huan-menu", function (e) {
            var url="";
            url = $(this).data("url");
            var id = $(this).data("id");
            var text = $(this).text();

            //如果不存在,就在右侧选项卡中增加一个选项
            if ($(".layui-tab-title").find("li[lay-id='" + id + "']").length <= 0) {
                var height = document.documentElement.clientHeight - 160 + "px";
                element.tabAdd('demo', {
                    title: text,
                    //iframe子页面onload新增监听src为/loginPage是父页面跳转/loginPage,解决“俄罗斯套娃”问题
                    content: "<iframe id='main_self_frame' name='main_self_frame' class='main_self_frame' width='100%' height='" + (height) + "' frameborder='0' scrolling='auto' src='" + url + "'></iframe>",
                    id: id
                });
            }
            // 如果存在,就切换到选项卡对应对应的选项
            element.tabChange('demo', id);
        });

        // 监听home.html选项卡lay-filter="demo"
        element.on('tab(demo)', function(data){
            var layId = $(this).attr('lay-id');
            // 将选中的选项卡的layId赋值给iframe的src
            document.getElementById("main_self_frame").src=layId;
            var menuDd = $(".layui-nav-tree .layui-nav-item .layui-nav-child dd");
            $.each($(".huan-menu"), function () {
                //如果点击左侧菜单栏所传入的id 在右侧tab项中的lay-id属性可以找到,则说明该tab项已经打开
                var id = $(this).data("id");
                if (layId == id) {
                    if(menuDd.find("a[id='"+layId+"']").length <= 0) {
                        menuDd.find("a[id !='"+layId+"']").parent().removeClass("layui-this");
                        menuDd.find("a[id !='"+layId+"']").parents("dl").removeClass("layui-nav-itemed");
                        menuDd.find("a[id !='"+layId+"']").parents("li").removeClass("layui-nav-itemed");
                    }
                    // 先移除原来菜单和选项卡选项的效果,不然会叠加选中,之后再具体选中具体东西
                    menuDd.removeClass("layui-this");
                    menuDd.find("a[id='"+layId+"']").parents("dl").removeClass("layui-nav-itemed");
                    menuDd.find("a[id='"+layId+"']").parents("li").removeClass("layui-nav-itemed");
                    menuDd.find("a[id='"+layId+"']").parents("dl").addClass("layui-nav-itemed");
                    menuDd.find("a[id='"+layId+"']").parents("li").addClass("layui-nav-itemed");
                    menuDd.find("a[id='"+layId+"']").parent().addClass("layui-this");
                    // 找到选项卡对应左侧的菜单就中断遍历
                    return false;
                } else {
                    menuDd.find("a[id !='"+layId+"']").parent().removeClass("layui-this");
                    menuDd.find("a[id !='"+layId+"']").parents("dl").removeClass("layui-nav-itemed");
                    menuDd.find("a[id !='"+layId+"']").parents("li").removeClass("layui-nav-itemed");
                    return true;
                }
            });
        });
    });
});

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你实现这个功能。 首先,你需要在页面中引入layui库和jquery库: ```html <!-- 引入layui库 --> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/layui/2.5.6/css/layui.css"> <script src="https://cdn.bootcdn.net/ajax/libs/layui/2.5.6/layui.js"></script> <!-- 引入jquery库 --> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> ``` 然后,你需要在页面中添加一个按钮和一个容器,用于存放选项: ```html <button id="add-tab">新增选项</button> <div class="layui-tab" lay-filter="tab-demo"> <ul class="layui-tab-title"> <li class="layui-this">选项1</li> </ul> <div class="layui-tab-content"> <div class="layui-tab-item layui-show">内容1</div> </div> </div> ``` 接下来,你需要编写js代码来实现点击按钮动态添加与删除选项的功能: ```javascript // 初始化选项 layui.use('element', function(){ var element = layui.element; }); // 点击按钮新增选项 $('#add-tab').click(function() { var title = '选项' + ($('.layui-tab-title li').length + 1); // 新增选项的标题 var content = '内容' + ($('.layui-tab-content .layui-tab-item').length + 1); // 新增选项的内容 var tabTpl = '<li lay-id="{id}" class=""><a href="javascript:;">{title}</a></li>'; // 选项模板 var contentTpl = '<div class="layui-tab-item">{content}</div>'; // 选项内容模板 var id = new Date().getTime(); // 选项的唯一标识 var tabHtml = tabTpl.replace(/{id}/g, id).replace(/{title}/g, title); // 替换选项模板中的占位符 var contentHtml = contentTpl.replace(/{content}/g, content); // 替换选项内容模板中的占位符 $('.layui-tab-title').append(tabHtml); // 添加选项 $('.layui-tab-content').append(contentHtml); // 添加选项内容 layui.use('element', function(){ var element = layui.element; element.tabAdd('tab-demo', { title: title, content: content, id: id }); }); }); // 点击选项上的关闭按钮删除选项 $('body').on('click', '.layui-tab-title li i', function() { var id = $(this).parent().attr('lay-id'); // 获取选项的唯一标识 layui.use('element', function(){ var element = layui.element; element.tabDelete('tab-demo', id); // 删除选项 }); }); ``` 以上代码中,我们使用了`layui.element`模块来实现选项的添加和删除。在新增选项时,我们使用了模板字符串和正则表达式来替换占位符,生成选项选项内容的html代码。在删除选项时,我们使用了事件委托的方式来事件,以便于处理动态生成的选项。 好了,以上就是实现点击按钮动态添加与删除layui的Tab选项的代码了,你可以根据自己的需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值