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 相关文章推荐
简单实用的全选反选按钮例子
Oct 18 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
Mar 10 Javascript
通用javascript代码判断版本号是否在版本范围之间
Nov 29 Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 Javascript
JavaScript实现自定义媒体播放器方法介绍
Jan 03 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
Feb 14 Javascript
AngularJS 中ui-view传参的实例详解
Aug 25 Javascript
基于layui数据表格以及传数据的方式
Aug 19 Javascript
Vue框架TypeScript装饰器使用指南小结
Feb 18 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
Nov 11 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
详解ES6 中的Object.assign()的用法实例代码
Jan 11 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 FPDF类库应用实现代码
2009/03/20 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
php实现复制移动文件的方法
2015/07/29 PHP
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
JavaScript 序列化对象实现代码
2009/12/18 Javascript
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
JS 控件事件小结
2012/10/31 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
javascript中this关键字详解
2016/12/12 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
Python 学习笔记
2008/12/27 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
幼儿园家长会欢迎词
2014/01/09 职场文书
学生保证书范文
2014/04/28 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
企业计划生育责任书
2015/05/09 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
陪护人员误工证明
2015/06/24 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android