layui添加动态菜单与选项卡


Posted in Javascript onJuly 26, 2019

本文实例为大家分享了layui添加动态菜单与选项卡的具体代码,供大家参考,具体内容如下

HTML

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
 <title>Layui</title>
 <link rel="stylesheet" href="js/css/layui.css" media="all">
 </head>
 <body>
 <div class="layui-side layui-bg-black">
 <div class="layui-side-scroll">
 <!-- 左侧导航区域(可配合layui已有的垂直导航) -->
 <ul class="layui-nav layui-nav-tree" lay-filter="test" id="memus"></ul>
 </div>
 </div>
 <div class="layui-body">
 <!-- 动态选项卡 -->
 <div id="tabzu" class="layui-tab layui-tab-card layui-tab-brief" lay-filter="tabDemo" lay-allowclose="true">
 <ul class="layui-tab-title"></ul>
 <div class="layui-tab-content"></div>
 </div>
 </div>
 <script src="js/layui.all.js" charset="utf-8"></script>
 <script type="text/javascript" src="js/index.js" ></script>
 </body>
 
</html>

index.js

layui.use('element', function() {
 function checkLastItem(arr, i) {
 return arr.length == (i + 1);
 }
 
 function getAhtml(obj){
 return "<a href=\"javascript:;\" οnclick=\"addTab('" + obj.name + "','" + obj.url + "')\" >" + obj.name + "</a>";
 }
 //动态菜单
 layui.jquery.ajax({
 url: "http://127.0.0.1:18000/sys/menus",
 method: 'POST',
 success: function(res) {
 var html = "";
 for(var i = 0; i < res.length; i++) {
 var strli = "<li class=\"layui-nav-item lay-unselect \" >";
 if (res[i].url =='#'){
 strli = strli + "<a href=\"javascript:;\">" + res[i].name + "</a>";
 console.log(res[i].name)
 }else{
 strli = strli + getAhtml(res[i]);
 }
 if(res[i].pId == "0" && !checkLastItem(res, i) && res[i + 1].pId != "0") {
 strli = strli + "<dl class=\"layui-nav-child\" >";
 for(; !checkLastItem(res, i) && res[i + 1].pId != "0"; i++) {
 strli = strli + "<dd>"+getAhtml(res[i+1])+"</dd>";
 }
 strli = strli + "</dl>";
 }
 strli = strli + "</li>";
 html = html + strli;
 }
 layui.jquery("#memus").html(html);
 layui.element.init(); //一定初始化一次
 }
 })
});
 
//添加选项卡
function addTab(name, url) {
 if(layui.jquery(".layui-tab-title li[lay-id='" + name + "']").length > 0) {
 //选项卡已经存在
 layui.element.tabChange('tabDemo', name);
 layer.msg('切换-' + name)
 } else {
 //动态控制iframe高度
 var tabheight = layui.jquery(window).height() - 95;
 contentTxt = '<iframe src="' + url + '" scrolling="no" width="100%" height="' + (tabheight) + 'PX"></iframe>';
 //新增一个Tab项
 layui.element.tabAdd('tabDemo', {
 title: name,
 content: contentTxt,
 id: name
 })
 //切换刷新
 layui.element.tabChange('tabDemo', name)
 layer.msg('新增-' + name)
 }
}

菜单JSON

[
 {
 "name": "首页",
 "url": "shouye.html",
 "id": "1",
 "pId": "0"
 },
 {
 "name": "数据库",
 "url": "#",
 "id": "1",
 "pId": "0"
 },
 {
 "name": "MYSQL",
 "url": "mysql.html",
 "id": "2",
 "pId": "1"
 },
 {
 "name": "ORACLE",
 "url": "oracle.html",
 "id": "3",
 "pId": "1"
 },
 {
 "name": "开发语言",
 "url": "#",
 "id": "4",
 "pId": "0"
 },
 {
 "name": "JAVA",
 "url": "java.html",
 "id": "5",
 "pId": "4"
 },
 {
 "name": "Python",
 "url": "python.html",
 "id": "6",
 "pId": "4"
 }
]

效果截图:

layui添加动态菜单与选项卡

如果大家还想深入学习,可以点击两个精彩的专题:javascript选项卡操作方法汇总 jquery选项卡操作方法汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
判断浏览器的javascript版本的代码
Sep 03 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
javascript判断iphone/android手机横竖屏模式的函数
Dec 20 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
May 24 Javascript
使用jQuery避免鼠标双击的解决方案
Aug 21 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
Oct 12 Javascript
window.onload绑定多个事件的两种解决方案
May 15 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
vue2.0 常用的 UI 库实例讲解
Dec 12 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 jQuery
浏览器事件循环与vue nextTicket的实现
Apr 16 Javascript
layer设置maxWidth及maxHeight解决方案
Jul 26 #Javascript
javascript中的闭包概念与用法实践分析
Jul 26 #Javascript
layui自定义插件citySelect实现省市区三级联动选择
Jul 26 #Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
Jul 26 #Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
Jul 26 #jQuery
微信小程序—setTimeOut定时器的问题及解决
Jul 26 #Javascript
layUI实现三级导航菜单效果
Jul 26 #Javascript
You might like
PHP 数据库树的遍历方法
2009/02/06 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
Python语言的12个基础知识点小结
2014/07/10 Python
python爬取网页转换为PDF文件
2018/06/07 Python
python用post访问restful服务接口的方法
2018/12/07 Python
Python 处理图片像素点的实例
2019/01/08 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
暑期实习鉴定
2013/12/16 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
商务会议邀请函
2014/01/09 职场文书
求职者怎样写自荐信
2014/04/13 职场文书
工地材料员岗位职责
2015/04/11 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python