layui实现左侧菜单点击右侧内容区显示

2023-11-11

layui这个前端框架对后端人员来说提供了极大的方便,很大一部分同学在刚接触到这个框架就迫不及待的要动手实践了,刚好最近需要开发一个后台管理项目,就拿layui来进行学习和实践.

还没有接触到的同学可以先通读一遍文档,这样在遇到问题的时候才能够对症下药,仔细研究相关的板块
今天我们先来学习一下使用layui来实现左侧点击菜单,内容区显示tab

实验效果

图片描述

实现过程

html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title><?php echo $curTitle;?></title>
    <link rel="stylesheet" href="js/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">XXXX业务管理平台</div>
        <ul class="layui-nav layui-layout-right">
            <li class="layui-nav-item">
                欢迎光临,商户001
            </li>
            <li class="layui-nav-item"><a href="">安全退出</a></li>
        </ul>
    </div>

    <div class="layui-side layui-bg-black">
        <div class="layui-side-scroll">
            <!-- 左侧垂直导航区域-->
            <ul class="layui-nav layui-nav-tree" lay-filter="test">
                <li class="layui-nav-item">
                    <a class="" href="javascript:;">管理员管理</a>
                    <dl class="layui-nav-child">
                        <dd>
                            <a href="javascript:;" data-id="1" data-title="管理员列表" data-url="index.php?&a=adminList"
                               class="site-demo-active" data-type="tabAdd">管理员列表</a></dd>
                        <dd><a href="javascript:;" data-id="2" data-title="管理员日志" data-url="index.php?&a=adminLogList"
                               class="site-demo-active" data-type="tabAdd">管理员日志</a></dd>
                    </dl>
                </li>
                <li class="layui-nav-item">
                    <a href="javascript:;">交易管理</a>
                    <dl class="layui-nav-child">
                        <dd><a href="javascript:;" data-id="" data-id="3" data-title="存款列表"
                                data-url="index.php?&a=adminList" class="site-demo-active" data-type="tabAdd">存款列表</a>
                        </dd>
                        <dd><a href="javascript:;">代付列表</a></dd>
                    </dl>
                </li>
                <li class="layui-nav-item">
                    <a href="javascript:;">系统管理</a>
                    <dl class="layui-nav-child">
                        <dd><a href="javascript:;">支付API设置</a></dd>
                        <dd><a href="javascript:;">公告设置</a></dd>
                        <dd><a href="javascript:;">控制台</a></dd>
                </li>
            </ul>
        </div>
    </div>

    <!--tab标签-->
    <div class="layui-tab" lay-filter="demo" lay-allowclose="true" style="margin-left: 200px;">
        <ul class="layui-tab-title"></ul>
        <div class="layui-tab-content"></div>
    </div>

<div class="layui-footer" style="text-align:center;">
    <!-- 底部固定区域 -->
    © sunway.tk XXXX业务管理平台
</div>
</div>
<script src="/js/layui/layui.js"></script>
<script>
<!--这里是放置js代码区域-->
</script>
</body>
</html>

javascript代码:

    layui.use(['element', 'layer', 'jquery'], function () {
        var element = layui.element;
        // var layer = layui.layer;
        var $ = layui.$;
        // 配置tab实践在下面无法获取到菜单元素
        $('.site-demo-active').on('click', function () {
            var dataid = $(this);
            //这时会判断右侧.layui-tab-title属性下的有lay-id属性的li的数目,即已经打开的tab项数目
            if ($(".layui-tab-title li[lay-id]").length <= 0) {
                //如果比零小,则直接打开新的tab项
                active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"), dataid.attr("data-title"));
            } else {
                //否则判断该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") == dataid.attr("data-id")) {
                        isData = true;
                    }
                })
                if (isData == false) {
                    //标志为false 新增一个tab项
                    active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"), dataid.attr("data-title"));
                }
            }
            //最后不管是否新增tab,最后都转到要打开的选项页面上
            active.tabChange(dataid.attr("data-id"));
        });

        var active = {
            //在这里给active绑定几项事件,后面可通过active调用这些事件
            tabAdd: function (url, id, name) {
                //新增一个Tab项 传入三个参数,分别对应其标题,tab页面的地址,还有一个规定的id,是标签中data-id的属性值
                //关于tabAdd的方法所传入的参数可看layui的开发文档中基础方法部分
                element.tabAdd('demo', {
                    title: name,
                    content: '<iframe data-frameid="' + id + '" scrolling="auto" frameborder="0" src="' + url + '" style="width:100%;height:99%;"></iframe>',
                    id: id //规定好的id
                })
                FrameWH();  //计算ifram层的大小
            },
            tabChange: function (id) {
                //切换到指定Tab项
                element.tabChange('demo', id); //根据传入的id传入到指定的tab项
            },
            tabDelete: function (id) {
                element.tabDelete("demo", id);//删除
            }
        };
        function FrameWH() {
            var h = $(window).height();
            $("iframe").css("height",h+"px");
        }
    });

实现逻辑:动态判断所点击的菜单元素,利用元素上设置的data属性值,在右侧内容区生成页面iframe进行动态显示
参考文献:layui官网

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

layui实现左侧菜单点击右侧内容区显示 的相关文章

  • CSV 从 UTF8 到 ISO-8859-1

    我正在尝试修改我的 CSV 导出 但它不会将我的 CSV 从 UTF 8 转换 保存为 ISO 8859 1 请问我做错了什么吗 实际上自从修改了这个之后 我得到了一个空的 CSV 文件 php 7 0 x function my Gene
  • 如何重定向到另一个页面并从表中传递 url 中的参数?

    如何重定向到另一个页面并从表中传递 url 中的参数 我在龙卷风模板中创建了类似的东西 table thead tr th Username th th Nation th th Rank th th th tr thead tbody f
  • cURL '格式错误的网址'

    This url 在浏览器中工作得很好 但 cURL 返回错误 3 格式错误的 url 关于解决方法有什么想法吗 EDIT 卷曲代码 function get web page url options array CURLOPT RETUR
  • 使用 DOM 获取 div 的内容(包括子标签)

    我正在使用 DOM 来获取 div 标签的内容 但内部 html 部分未显示 功能是 dom new DOMDocument libxml use internal errors true dom gt loadHTMLFile url l
  • 如何使用ckeditore通过ajax发送数据?

    我在 django 中有一个表格 这是 撰写邮件 形式 我将此表单从视图发送到我的模板 然后应用 ckeditor 来更改正文样式 我希望通过 ajax 发布此表单 当使用 ckeditor 时 body 字段的值不会随 request P
  • 疯狂的 crond 行为。不断使 bash 进程失效

    我有一个看起来像这样的 crontab SHELL bin bash PATH sbin bin usr sbin usr bin MAILTO root HOME 0 59 var www html private fivemin zda
  • AngularJS Youtube 播放器嵌入非常大的播放列表

    我目前正在构建一个 AngularJS 应用程序 我知道它有点过时 但我对它很有信心 我的应用程序需要嵌入一个 YouTube 播放器 其中包含一个非常大的播放列表 大约 1500 个项目 但我无法对其进行编码 以便它实际上可以嵌入超过 2
  • 为什么 "asdf".replace(/.*/g, "x") == "xx" ?

    我偶然发现了一个令人惊讶的 对我来说 事实 console log asdf replace g x Why two替代品 似乎任何没有换行符的非空字符串都会产生此模式的两个替换 使用替换函数 我可以看到第一个替换是整个字符串 第二个替换是
  • 每次页面重新加载时都会出现新的 Google 登录库提示

    在我的项目中 我使用常规弹出客户端 JS 身份验证 平台客户端 https developers google com identity sign in web sign in 我从旧版 Google Sign 迁移到新版 Google I
  • 从多个选择列表中插入数据到mysql数据库(html形式)

    我制作了一个表格 其中有商店的 ID
  • 从外部 bash 设置环境变量

    我试图使用 PHP 从命令行 设置 bash 环境变量 但没有成功 buff array buff VARTESTKEY VARTESTVALUE buff export VARTESTKEY file put contents scrip
  • WordPress 事件按元生效日期排序

    我在获取参数数组以按 Wordpress 中的日期对事件列表进行排序时遇到一些问题 我在 Stack Overflow 和其他地方找到了几个建议的解决方案 但经过大量的试验和错误后 这些解决方案似乎都不起作用 这没什么花哨的 而且应该比这容
  • 使用js获取选择选项的onclick事件

    我有一个非常令人沮丧的问题 我有这个代码 它过滤掉我的结果并将它们输入到选择框中 var syn
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建
  • PHP - 查找和比较日期

    你好 我有 foreach 我可以在其中获取数据库中的事件数据 我使用数据库中的日期名称 例如 event date 我需要在一个 div 中比较具有相同日期和输出的操作 例如我有这个事件 活动一 9 月 13 日 活动二 9 月 1 日
  • 保存 dat.gui 预设以动态添加控件?

    我正在向 dat gui 界面动态添加控件 但 保存设置 功能无法识别它们 var mygui new dat GUI mygui remember mygui standard way of adding a control mygui
  • 使用带有箭头的 MaterializeCSS 轮播 - 如何使用普通 javascript 进行初始化

    我正在尝试使用 MaterializeCSS 创建带有箭头的轮播 我正在尝试使用这个代码笔 https codepen io Paco Cervantes pen ZLxKpj取得有限的成功 我想使用普通的 javascript 而不是 j
  • Chrome 上的 contenteditable 中未显示编辑光标

    当您打开此页面时 请参阅现场演示 http jsfiddle net gs3p1a6r 3 show 与 Chrome span span CSS myspan border 0 outline 0 JS myspan focus the
  • Laravel 5 注销特定用户

    在我的 laravel 5 应用程序中 有一个功能允许具有管理员角色的用户重置非管理员的任何人的密码 但这不会强制该人注销并再次登录 更改密码后如何强制用户注销 我没有对用于验证用户身份或任何内容的中间件进行任何更改 我不知道它是否有效 但
  • (A == B == C) 比较在 JavaScript 中如何工作?

    我预计以下比较会给出错误 var A B 0 if A B 0 console log true else console log false 但奇怪的是它又回来了false 更奇怪的是 console log A B 1 returns

随机推荐

  • Spring框架概述 --- 常用注解

    Spring框架概述 常用注解 装配注解 SpringMVC注解 Spring配置注解 装配注解 Spring 提供了以下多个注解 这些注解可以直接标注在 Java 类上 将它们定义成 Spring Bean Component 该注解用于
  • tomcat端口被占用解决办法

    tomcat启动时出现Address already in use JVM Bind 的原因是因为端口被占用 有可能是因为多次启动tomcat或者启动了多个tomcat 或者是其他应用程序或者服务占用了 错误日志如下 严重 Standard
  • C++学习之用数组实现顺序表

    开始学习数据结构 路还长 加油 用C 的template实现顺序表SequenceList 第一次上传完整代码 比较菜 SequenceList h ifndef SEQ LIST H define SEQ LIST H include
  • 【100%通过率 】【华为OD机试 c++/java/python】最小调整顺序次数【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给定一个队列 但是这个队列比较特殊 可以从头部添加数据 也可以从尾部添加数据 但是只能从头部删除数据 输入一个数字n 会依次添加数字1 n 也就
  • JavaScript中sort方法排序不正确解决办法

    假如你想对一个数组排序 在JS中你会想到sort函数 例如 var arr 1 100 20 200 40 50 120 10 arr sort console log arr 控制台中可以看到结果是 1 10 100 120 20 200
  • 气压计MS5611编程操作流程

    文章更新版本 时间 备注 修订人 V0 1 发布于 2019 09 21 11 03 46 初始版本 libo 文章目录 一 开发笔记 二 初始化与工作流程 1 从PROM读取出厂校准值 2 启动温度AD转换 读取AD值 3 启动气压AD转
  • TaskCompletionSource

    概括 TaskCompletionSource
  • 极速加密文件夹: 一个2秒加密文件夹的Windows文件夹加密软件

    大部分朋友的电脑上 经常会有一些重要文件 隐私照片和视频不想让别人轻易可以访问或者打开 尤其你的电脑可能会被别人偶尔使用的时候 加密保护就尤其重要了 不少Windows用户通常使用ZIP等压缩工具 将文件夹压缩成压缩包并加上密码进行文件保护
  • 图像语义分割综述(semantic segmentation) 上篇

    本文对图像语义分割近年来的主要发展做一个综述性的介绍 翻译了以下两篇博文 并进行了整合 https www jeremyjordan me semantic segmentation http blog qure ai notes sema
  • Linux 最全的添加开机启动方法

    添加开启启动的方式一般有如下几种 第一种 把开机命令 写入到os的启动文件之中 伴随着启动文件的读取 顺便帮你把要启动的任务 一起启动了 第二种 把启动任务 放到os的启动目录下 os启动过程之中 会执行所有放在此目录下的任务 第三种 os
  • 利用Arthas+APM监控进行Java性能深度定位

    大家可能都用过APM监控 包括开源的Skywalking 商用的卓豪 ZOHO ManageEngine APM应用性能监控 以及云监控产品如听云 Server监控 这些APM监控产品大大方便了我们实时监控应用性能 并实现性能深度透视监控
  • JavaScript 日期对象Date(声明/Date对象的方法/返回距离1970/01/01毫秒数)

    Date 1 日期对象声明 var date1 new Date 设定制定时间 兼容最强 var date2 new Date 2016 01 27 12 00 00 不常用 var date3 new Date Wed Jan 27 20
  • .NET当中的另一个V8 JS引擎 Wrapper

    前言 之前写过一篇文章 是关于在 NET中 使用v8sharp作为v8Engine的Wraper 从而在 NET中与Javascript互操作 不过v8Sharp有几个很大的问题 第一 在参数中传递中文字符串会产生乱码 第二 无法在 NET
  • 篡改检查是什么?.NET混淆器Dotfuscator如何实现应用程序的保护?

    Dotfuscator是一个 NET的Obfuscator 它提供企业级的应用程序保护 大大降低了盗版 知识产权盗窃和篡改的风险 Dotfuscator的分层混淆 加密 水印 自动失效 防调试 防篡改 报警和防御技术 为世界各地成千上万的应
  • spring-security-oauth2 登录或者认证成功后 做一些操作, 比如登录日志。

    通过跟踪代码 发现放当我们访问 oauth token 这个请求的方法在TokenEndpoint 获取access token 的时候 身份认证成功后会在 ProviderManager的authenticate 方法 通过eventPu
  • Java学习(100)Java多线程——实现Callable接口创建线程

    Java多线程 实现Callable接口创建线程 步骤 案例 实现Callable接口创建线程 创建多线程还会有其他方式 我们再介绍一种 1 继承Thread类 重写run 方法 run 方法代表线程要执行的任务 2 实现Runnable接
  • Python随笔1(持续更新中)

    一 Python对于缩进有着极其严格的要求 Python的缩进规则等效于C语言中的 符号 Python中的tab或者空格的多少代表语句的等级 或者代表其中谁的子语句 例如以下Python与C语言的for循环语句 Python语言的for循环
  • 【docker】docker-compose安装带ui页面的kafka集群

    docker compose 安装带kafka ui 的kafka集群 在日常的工作当中 kafka集群作为常用的中间件 其搭建过程略显繁琐 需要配置的文件颇多 为了方便各位初学者快速体验kafka的魅力 本文采取一键式安装kafka 3
  • 华为机试(字符串消消乐---Java实现)

    package test import java util Scanner 消消乐 字符串 描述 给定一个只包含大小写字母的字符串 大小写敏感 若相邻两个元素相等则消除 直到最后字符串消除不了了 输出消消乐后字符串的长度 若遇到非大小写字母
  • layui实现左侧菜单点击右侧内容区显示

    layui这个前端框架对后端人员来说提供了极大的方便 很大一部分同学在刚接触到这个框架就迫不及待的要动手实践了 刚好最近需要开发一个后台管理项目 就拿layui来进行学习和实践 还没有接触到的同学可以先通读一遍文档 这样在遇到问题的时候才能