前端——Layui的导航栏与tab页联动

一、body

html 复制代码
<!--  导航栏  -->
    <div class="layui-side layui-bg-black">
        <div class="layui-side-scroll">
            <ul id="nav" class="layui-nav layui-nav-tree" lay-filter="stock">
                <li class="layui-nav-item layui-this"><a href="#wholeAnalysis" lay-id="wholeAnalysis">整体分析</a></li>
                <li class="layui-nav-item"><a href="#bkAnalysis" lay-id="bkAnalysis">aaaa</a></li>
                <li class="layui-nav-item"><a href="#gpAnalysis" lay-id="gpAnalysis">bbbb</a></li>
                <li class="layui-nav-item"><a href="#bkChance" lay-id="bkChance">cccc</a></li>
                <li class="layui-nav-item"><a href="#gpChance" lay-id="gpChance">dddd</a></li>
            </ul>
        </div>
    </div>

    <div class="layui-body">
        <!--  tab页  -->
        <div id="tab" class="layui-tab" lay-filter="stock" lay-allowClose="true">
            <ul class="layui-tab-title">
                <li class="layui-this" lay-id="wholeAnalysis">整体分析</li>
            </ul>
            <div class="layui-tab-content">
                <div class="layui-tab-item layui-show">
                    <iframe id="wholeAnalysis" src="wholeAnalysis" frameborder="0" height="100%" width="100%"></iframe>
                </div>
            </div>
        </div>
    </div>

二、JS

javascript 复制代码
// 导航栏点击
        element.on('nav(stock)', function (data) {
            const layId = this.getAttribute('lay-id')
            if (layId == null) {
                return 0;
            } else {
                //判断是否存在tab
                let exist = $("li[lay-id='" + layId + "']").length; 
                if (exist == 0) {
                    element.tabAdd('stock', {
                        title: this.innerHTML,
                        content: "<iframe id='" + layId + "' frameborder='0' src='" + layId + "' scrolling='auto' height='100%' width='100%'></iframe>",
                        id: layId
                    });
                }
                setIframeHeight(document.getElementById(layId));
                element.tabChange('stock', layId);
            }
        });

        // tab页点击
        element.on('tab(stock)', function () {
            let Len = $("#nav li a").length;
            let targetIndex;
            for (let i = 0; i < Len; i++) {
                if ($(this).context.textContent == $("#nav li a")[i].outerText) {
                    //tab内容和垂直导航相等时,记录下序号
                    targetIndex = i;
                }
            }
            // 更新layui-this样式类
            $("#nav").find('.layui-this').removeClass('layui-this');
            $("#nav li a").eq(targetIndex).parentsUntil("#nav").addClass("layui-this");
            location.hash = this.getAttribute('lay-id');
        });
相关推荐
Miketutu1 天前
Flutter学习 - 组件通信与网络请求Dio
开发语言·前端·javascript
摘星编程1 天前
React Native for OpenHarmony 实战:Swiper 滑动组件详解
javascript·react native·react.js
鸣弦artha1 天前
Flutter框架跨平台鸿蒙开发——Build流程深度解析
开发语言·javascript·flutter
光影少年1 天前
前端如何调用gpu渲染,提升gpu渲染
前端·aigc·web·ai编程
Surplusx1 天前
运用VS Code前端开发工具完成网页头部导航栏
前端·html
小宇的天下1 天前
Calibre 3Dstack --每日一个命令day13【enclosure】(3-13)
服务器·前端·数据库
LongJ_Sir1 天前
Cesium--可拖拽气泡弹窗(Vue3版)
javascript
跟着珅聪学java1 天前
JavaScript 中定义全局变量的教程
javascript
一只小bit1 天前
Qt 文件:QFile 文件读写与管理教程
前端·c++·qt·gui
午安~婉1 天前
整理知识点
前端·javascript·vue