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 相关文章推荐
jquery 学习之二 属性(类)
Nov 25 Javascript
鼠标放在图片上显示大图的JS代码
Mar 26 Javascript
jQuery中 noConflict() 方法使用
Apr 25 Javascript
jQuery带箭头提示框tooltips插件集锦
Nov 17 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
Feb 28 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
Jul 14 Javascript
JavaScript数组复制详解
Feb 02 Javascript
详解tween.js 中文使用指南
Jan 05 Javascript
基于vue2.x的电商图片放大镜插件的使用
Jan 22 Javascript
GOJS+VUE实现流程图效果
Dec 01 Javascript
VUE : vue-cli中去掉路由中的井号#操作
Sep 04 Javascript
HTML+JS实现在线朗读器
Feb 15 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中$this和$that指针使用实例
2015/01/06 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Python Socket编程入门教程
2014/07/11 Python
Python 读写文件的操作代码
2018/09/20 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
在python中修改.properties文件的操作
2020/04/08 Python
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
个人素质的自我评价分享
2013/12/16 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
大班幼儿评语大全
2014/04/30 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
小学课外阅读总结
2014/07/09 职场文书
职工年度考核评语
2014/12/31 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫