layui添加菜单和动态操作tab

2023-11-15

代码一(使用模板引擎渲染菜单)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>菜单和tab操作</title>
    <script type="text/javascript" src="../lib/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="../lib/layui/layui.js"></script>
    <link rel="stylesheet" href="../lib/layui/css/layui.css">
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
    <div class="layui-header">
        <div class="layui-logo">layui 后台布局</div>
        <!-- 头部区域(可配合layui已有的水平导航) -->
    </div>

    <div class="layui-side layui-bg-black">
        <div class="layui-side-scroll">
            <!-- 左侧导航区域(可配合layui已有的垂直导航) -->
            <!--加了  lay-shrink="all"这个属性则菜单 一个开启一个会折叠-->
            <ul class="layui-nav layui-nav-tree"  lay-filter="test" id="menuPanel" lay-shrink="all">
                <!--挖出来的li-->
            </ul>
        </div>
    </div>

    <div class="layui-body">
        <div class="layui-tab" lay-allowClose="true" lay-filter="menuTab">
            <ul class="layui-tab-title">
                <li class="layui-this">首页</li>
            </ul>
            <div class="layui-tab-content">
                <div class="layui-tab-item layui-show">首页</div>
            </div>
        </div>
    </div>

    <div class="layui-footer">
        <!-- 底部固定区域 -->
        © layui.com - 底部固定区域
    </div>
</div>


<!--定义我们要渲染的菜单模板 d代表得到的json串-->
<script type="text/html" id="menuTempPanel">
 {{# for(let i=0;i<d.length;i++){ }}
 <!--加了layui-nav-itemed 后默认展开 这儿不加-->
   <li class="layui-nav-item ">
       <a class="" href="javascript:;">{{ d[i].title}}</a>
       <dl class="layui-nav-child">
           {{# for(let j=0;j<d[i].children.length;j++){ }}
            <dd>
                <a class="menuItem" href="javascript:;" data-id="{{d[i].children[j].id}}" data-url="{{d[i].children[j].url}}">{{ d[i].children[j].title}}</a>
            </dd>
           {{# }}}
       </dl>
   </li>
 {{# }}}
</script>


<script>
    //JavaScript代码区域
    layui.use(['element','laytpl'], function(){
        let element = layui.element;
        let laytpl=layui.laytpl;
        //定义菜单json字符串
        let menuJson=[
            {id:1,title:'后台管理',url:'',children:[
            {id: 11,title: '用户管理',url: 'https://www.baidu.com'},
            {id: 12,title: '角色管理',url: ''},
            {id: 13,title: '部门管理',url: ''},
            {id: 14,title: '人员管理',url: ''},
            ]},
            {id:2,title:'页面管理',url:'',children:[
                    {id: 21,title: '新增管理',url: ''},
                    {id: 22,title: '删除管理',url: ''},
                    {id: 23,title: '查询管理',url: ''},
                    {id: 24,title: '修改管理',url: ''},
                ]},
            {id:3,title:'会员管理',url:'',children:[
                    {id: 31,title: 'VIP会员管理',url: ''},
                    {id: 32,title: '会员管理',url: ''},
                    {id: 33,title: 'SVIP管理',url: ''},
                    {id: 34,title: '普通会员管理',url: ''},
                ]}
            ];
        //获得菜单模板
        let menuTempPanelHtml = $("#menuTempPanel").html();
        //使用模板引擎把 menujson渲染到 menuTempPanelHtml列表模板中 渲染完后会得到完整的html(result)
        laytpl(menuTempPanelHtml).render(menuJson,function (result) {
            //将result渲染到菜单上
            $("#menuPanel").html(result);
        })



        /*
           *
           * 动态tab操作
           * */
        $(".menuItem").on('click',function () {
            let title=$(this).html();
            let id = $(this).attr("data-id");
            let url=$(this).attr("data-url");
            element.tabAdd('menuTab',{
                title:title,
                content:'<iframe style="height:600px;width: 100%" src="'+url+'"></iframe>',
                id:id,
            });
            //将id是当前点击的id的tab的内容切换到当前的tab
            element.tabChange('menuTab',id);
        })




        /*
      *  需要重写渲染一下页面,不然手风琴无法折叠
      * */
        //第一种方法
        //layui.element.init();//初始化
        //第二种方法
        element.render('nav')
    });
</script>
</body>
</html>

代码二修改版

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>菜单和tab操作</title>
    <script type="text/javascript" src="../lib/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="../lib/layui/layui.js"></script>
    <link rel="stylesheet" href="../lib/layui/css/layui.css">
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
    <div class="layui-header">
        <div class="layui-logo">layui 后台布局</div>
        <!-- 头部区域(可配合layui已有的水平导航) -->
    </div>

    <div class="layui-side layui-bg-black">
        <div class="layui-side-scroll">
            <!-- 左侧导航区域(可配合layui已有的垂直导航) -->
            <!--加了  lay-shrink="all"这个属性则菜单 一个开启一个会折叠-->
            <ul class="layui-nav layui-nav-tree"  lay-filter="test" id="menuPanel" lay-shrink="all">
                <!--挖出来的li-->
            </ul>
        </div>
    </div>

    <div class="layui-body">
        <div class="layui-tab" lay-allowClose="true" lay-filter="menuTab">
            <ul class="layui-tab-title">
                <li class="layui-this">首页</li>
            </ul>
            <div class="layui-tab-content">
                <div class="layui-tab-item layui-show">首页</div>
            </div>
        </div>
    </div>

    <div class="layui-footer">
        <!-- 底部固定区域 -->
        © layui.com - 底部固定区域
    </div>
</div>


<!--定义我们要渲染的菜单模板 d代表得到的json串-->
<script type="text/html" id="menuTempPanel">
 {{# for(let i=0;i<d.length;i++){ }}
 <!--加了layui-nav-itemed 后默认展开 这儿不加-->
   <li class="layui-nav-item ">
       <a class="" href="javascript:;">{{ d[i].title}}</a>
       <dl class="layui-nav-child">
           {{# for(let j=0;j<d[i].children.length;j++){ }}
            <dd>
                <a class="menuItem" href="javascript:;" data-id="{{d[i].children[j].id}}" data-url="{{d[i].children[j].url}}">{{ d[i].children[j].title}}</a>
            </dd>
           {{# }}}
       </dl>
   </li>
 {{# }}}
</script>


<script>
    //JavaScript代码区域
    layui.use(['element','laytpl'], function(){
        let element = layui.element;
        let laytpl=layui.laytpl;
        //定义菜单json字符串
        let menuJson=[
            {id:1,title:'后台管理',url:'',children:[
            {id: 11,title: '用户管理',url: 'https://www.baidu.com'},
            {id: 12,title: '角色管理',url: 'https://www.hao123.com/'},
            {id: 13,title: '部门管理',url: 'https://www.qq.com/'},
            {id: 14,title: '人员管理',url: 'https://www.163.com/?referFrom=www.hao123.com'},
            ]},
            {id:2,title:'页面管理',url:'',children:[
                    {id: 21,title: '新增管理',url: ''},
                    {id: 22,title: '删除管理',url: ''},
                    {id: 23,title: '查询管理',url: ''},
                    {id: 24,title: '修改管理',url: ''},
                ]},
            {id:3,title:'会员管理',url:'',children:[
                    {id: 31,title: 'VIP会员管理',url: ''},
                    {id: 32,title: '会员管理',url: ''},
                    {id: 33,title: 'SVIP管理',url: ''},
                    {id: 34,title: '普通会员管理',url: ''},
                ]}
            ];
        //获得菜单模板
        let menuTempPanelHtml = $("#menuTempPanel").html();
        //使用模板引擎把 menujson渲染到 menuTempPanelHtml列表模板中 渲染完后会得到完整的html(result)
        laytpl(menuTempPanelHtml).render(menuJson,function (result) {
            //将result渲染到菜单上
            $("#menuPanel").html(result);
        })



        /*
           *
           * 动态tab操作
           * */
        $(".menuItem").on('click',function () {
            let title=$(this).html();
            let id = $(this).attr("data-id");
            let url=$(this).attr("data-url");



            //声明一个是否点击过的标志 默认是false点击过
            let check=false;
            let menuFrames=$(".menu-iframe");
            let checkId;
            //循环所有的 tab 里面的 iframe 【class = menu-iframe】
            //找到 是否在当前iframe有你点击的id
            for(let i=0;i<menuFrames.length;i++){
                let iframeId=$(menuFrames[i]).attr('tab-id');
                //判断当前点击的菜单项id是否和已经存在的iframe的id相等
                if (id==iframeId){
                    check=true;
                    checkId=iframeId;
                    break;
                }
            }



            if (check){
                //找到了 点击过 我把当前找到位置的id  tabChange方法 让他选中
               // let index=clickArray.indexOf(id);
                element.tabChange('menuTab',checkId)
            }else {
                //没找到 没点过
                element.tabAdd('menuTab',{
                    title:title,
                    id:id,
                    content:'<iframe class="menu-iframe" tab-id="'+id+'" style="width: 100%;height: 820px" src="'+url+'"></iframe>'
                });
                //将id是当前点击的id的tab的内容切换到当前的tab
                element.tabChange('menuTab',id);
            }
        })




        /*
      *  需要重写渲染一下页面,不然手风琴无法折叠
      * */
        //第一种方法
        //layui.element.init();//初始化
        //第二种方法
        element.render('nav')
    });
</script>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

layui添加菜单和动态操作tab 的相关文章

  • html中使用js实现体彩11选5随机选号

    体彩11选5随机选号 页面预览 代码实现
  • 组织关系图谱

    div style width 100 height 800px div
  • js 微观任务、宏观任务、循环机制

    javascript是单线程语言 就是因为单线程的特性 就不得不提js中的同步和异步 同步和异步 所谓单线程 无非就是同步队列和异步队列 js代码是自上向下执行的 在主线程中立即执行的就是同步任务 比如简单的逻辑操作及函数 而异步任务不会立
  • layui复选框按钮事件(智能去重刷新)

    1 写好复选框 lt input type checkbox value 0 name available title 智能去重 id available lay filter available gt 2 给复选框加事件 form on
  • 封装一个通用的ajax请求

    封装ajax function useajax method url data callback type 创建兼容对象 var xhr if window XMLHttpRequest xhr new XMLHttpRequest els
  • postMan使用技巧

    使用postMan调试接口 一些接口要实现登录才能访问 即要还token才能访问 一般登录后 拿到token才复制到其他接口下添加token变量 如些复制感觉是挺麻烦的 这时我们可以设置postman的全局变量 操作如下 添加调试环境和全局
  • js 本地存储和获取

    localStorage setItem temp orderAr 存入 参数 1 调用的值 2 所要存入的数据 console log localStorage getItem temp 输出
  • js数组相加相减函数

    数组相减 reduceArray arr1 arr2 for var i arr1 length 1 i gt 0 i var a arr1 i for var j arr2 length 1 j gt 0 j var b arr2 j i
  • JS声明二维数组常见办法

    JS声明二维数组常见办法 目录 文章目录 前言 new Array 和 fill fill 灵活插入 for 笨办法 Array from 前言 目前论坛常见的办法代码质量奇差 因此针对这个问题进行整理 new Array和fill con
  • html标签中src=“图片路径”,怎么用变量替换路径

    div style background image none bg0 gif bg5 gif div
  • JS 时区时间转换

    业务场景 页面服务器时间是东八区时间 页面 JS 功能需要对比服务器时间和用户本地时间 为兼容世界各地时间 需要将用户本地时间转换为东八区时间 基本概念 格林威治时间 格林威治子午线上的地方时 或零时区 中时区 的区时叫做格林威治时间 也叫
  • 通过点击按钮在页面添加图片

    点击添加按钮 在盒子中加入图片 点击图片实现删除图片效果 代码如下
  • JavaScript every() 方法:提示、技巧和用例

    JavaScript 巩固了其作为世界上最流行和最广泛使用的编程语言之一的地位 这是有充分理由的 它的动态特性和多功能性使其成为 Web 开发 从客户端交互到服务器端编程 的首选 提高其效率的一个重要因素是内置方法的多样性 其中一种有用的方
  • 用于富 Web 开发的 13 个免费 JavaScript 库和插件

    在这个新的一天伴随着最新技术崛起的舞台上 让您的商业品牌绽放光芒的唯一方法就是紧跟市场流行的趋势 使用 HTML 和 JavaScript 等技术是通过其中使用的一流功能获得盈利业务的灵魂 当从技术角度谈论 JavaScript 时 考虑到
  • js 手机、邮箱、身份证格式验证

  • uview的select组件选择问题

    官方文档羞涩难懂 直接用拖拽工具 对于常用的表单组件 可直接帮你生成相关事件 时间 单列多列等选择器等支持数据回显功能 免开发 在拖拽面板中的 formitem 表单项中 转载 uniapp页面速成提效工具 uniapp uview ui
  • js formatDate 时间转换

    formatDate function time fmt type type 类型 0 时间为秒 1 时间为毫秒 var date new Date type 0 time 1000 time var o M date getMonth 1
  • 基于Java SSM+layui+mysql实现的图书借记管理系统源代码+数据库

    介绍 本项目使用的技术栈是SSM layui mysql 服务器使用的是tomcat 其中书籍图片存放的位置需要先在tomcat根目录下conf setting xml中配置虚拟路径 本项目配置的是D upload 完整代码下载地址 图书借
  • 企业电子招标采购系统源码Spring Cloud + Spring Boot + MybatisPlus + Redis + Layui + 前后端分离 + 二次开发

    项目说明 随着公司的快速发展 企业人员和经营规模不断壮大 公司对内部招采管理的提升提出了更高的要求 在企业里建立一个公平 公开 公正的采购环境 最大限度控制采购成本至关重要 符合国家电子招投标法律法规及相关规范 以及审计监督要求 通过电子化
  • layui表格table不分页,显示全部数据

    layui表格table不分页 显示全部数据 表格渲染时添加两行代码 page false limit Number MAX VALUE 数据表格默认全部显示 table render elem orderTable id orderTab

随机推荐

  • java JLabel改变大小后如何刷新_到底一行java代码是如何在计算机上执行的

    不知道你是否思考过 每次我们在IDEA中右键Run Application启动主方法 假如程序运行正常 控制台也打印出了你所要打印的信息 在这个过程中你知道这台计算机上那些硬件及其软件都是以什么样的方式参与到这个过程吗 今天我们就分析梳理下
  • Java对正则表达式的支持(手机、身份证校验)

    目录 1 数量 单个 字符匹配 2 数量 单个 字符集 可以从里面任选一个字符 3 数量 单个 简化字符集 4 边界匹配 5 数量表示 默认情况下只有添加上了数量单位才可以匹配多位字符 6 逻辑表达式 可以连接多个正则 7 理解字符 的含义
  • OpenMMLab MMDetectionV3.1.0-SAM(环境安装、模型测试、训练以及模型后处理工具)

    OpenMMLab Playground 概况 当前通用目标检测的研究方向正在朝着大型多模态模型发展 除了图像输入之外 最近的研究成果还结合了文本模式来提高性能 添加文本模态后 通用检测算法的一些非常好的属性开始出现 例如 可以利用大量易于
  • UE4 自定义鼠标样式

    主要内容 在项目制作中我们往往不会使用默认的鼠标样式 这时就需要自定义鼠标样式 具体实现步骤就是创建一个带有图片的UI蓝图然后在项目设置里的UserInterface里进行设置 实现步骤 1 新建UI蓝图 添加一个Image控件把锚点设置成
  • 电容降压主要是用在直流稳压电源电路里

    https www cnblogs com jarvise p 4647029 html 基本原理 电容降压主要是用在直流稳压电源电路里 直流稳压电源电路的大致结构是 市电 变压 降压 整流 滤波 稳压 直流输出 变压 主要是降压 一般使用
  • 非线性微分跟踪器

    微分器描述 离散形式的非线性微分跟踪为 其中 h为采样周期 v k 为第k时刻的输入信号 为决定跟踪快慢的系数 fst 为最速控制综合函数 描述如下 仿真分析 微分器测试 输入信号v t sin2pit 采样周期h 0 001 150 扰动
  • 高性能本地存储设计

    本地存储常规架构 通用的云本地存储常规架构如下图所示 以MySQL数据库为例 它通过POSIX API与云主机内核交互 云主机内核包括一个标准文件系统和标准的块设备接口 云主机内核下面是云物理机内核 它自上而下由标准文件系统 标准块设备接口
  • STL之list(二)

    默认allocator为alloc 其具体使用版本请参照
  • HTML画布与SVG(Canvas vs. SVG)

    目录 画布 Canvas 什么是 Canvas 创建 Canvas 元素 通过 JavaScript 来绘制 理解坐标 更多 Canvas 实例 实例 线条 实例 圆形 实例 渐变 实例 图像 相关页面 SVG Scalable Vecto
  • 信号量的基本概念总结

    以下内容是摘抄博客 https blog csdn net fern girl article details 61197995 信号量的基本概念 一 首先 我们要知道信号量是什么 信号量的本质是数据操作锁 它本身不具有数据交换的功能 而是
  • FileSystemObject组件新建/读取/添加/修改/删除功能实例

  • MAC快捷键对照表

    Mac 键盘符号说明 Command Shift Caps Lock Option Control Return Enter Delete 向前删除键 Fn Delete 上箭头 下箭头 左箭头 右箭头 Page Up Fn Page Do
  • matlab kl散度,基于KL散度的面向对象遥感变化检测

    3 2 实验过程与结果 3 2 1 面向对象的遥感影像分割 利用ENVI软件的Segment Only Feature Extraction功能模块对实验数据进行面向对象分割操作 该方法采用的是Full Lambda Schedule分割算
  • 多益2018春招前端技术面试

    2018春招 多益网络内推 前端开发工程师 技术面问题 据我了解 从一月到三月份年 多益一共启动了至少三批春招招聘 从同学的反馈来看 一月份考验刚结束的那批春招通过率比较高 至于我个人 参加的是三月份上中旬的春招内推 可惜并没有通过 总体上
  • 虚拟机克隆后无法连接网络

    本文章转载自 Linux 无线图标莫名消失的解决方法 xin1889的博客 CSDN博客 今天我的也是的觉得再弄个虚拟机麻烦 索性就直接克隆了 然后连不上网 就连接原来的可以 连接百度也可以 但是唯独ping自己不行 然后不知道怎么回事 同
  • 智能指针和函数模板

    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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
  • c++学习笔记-#pragma once

    pragma 预处理宏的一般格式 pragma one one是参数 1 pragma message message 当编译器遇到这条指令时 它会在编译输出窗口中将message打印出来 常用于宏条件条件判断中使用 这样就知道自己的宏条件
  • 串口通信知识点总结

    串口通信小试牛刀 一 串口协议和RS 232标准 一 串口通讯协议 1 简介 2 串口通信的基本原理 二 RS232串口标准 1 简介 2 RS232串行接口的特点 3 RS232串行接口的电气特性 二 RS232电平与TTL电平 一 TT
  • Pytorch中多GPU并行计算教程

    如果不想看文字的 可以在我bilibili上看录制的视频教程 Pytorch多GPU使用教程 本教程所涉及的代码可自行在我的github上下载 https github com WZMIAOMIAO deep learning for im
  • layui添加菜单和动态操作tab

    layui添加菜单和动态操作tab 代码一 使用模板引擎渲染菜单 代码二修改版 代码一 使用模板引擎渲染菜单