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面向对象设计一 工厂模式
Dec 20 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
Mar 12 Javascript
JavaScript设计模式之外观模式介绍
Dec 28 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
Aug 15 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
May 05 Javascript
微信小程序 setData使用方法及常用错误解决办法
May 11 Javascript
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
two.js之实现动画效果示例
Nov 06 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
linux 后台运行node服务指令方法
May 23 Javascript
js中的this的指向问题详解
Aug 29 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 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截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
php实现Mysql简易操作类
2015/10/11 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
python3 logging日志封装实例
2020/04/08 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
光荣入党自我鉴定
2014/01/22 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
答谢酒会主持词
2015/07/02 职场文书
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers