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 相关文章推荐
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
Dec 25 Javascript
jQuery筛选器children()案例详解(图文)
Feb 17 Javascript
JS保留两位小数,多位小数的示例代码
Jan 07 Javascript
原生javascript模仿win8等待提示圆圈进度条
Apr 24 Javascript
jQuery中extend函数详解
Jul 13 Javascript
AngularJS基础 ng-include 指令示例讲解
Aug 01 Javascript
Bootstrap CSS布局之表单
Dec 17 Javascript
jQuery代码实现实时获取时间
Jan 29 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
Nov 11 Javascript
利用CDN加速react webpack打包后的文件详解
Feb 22 Javascript
VUE Elemen-ui之穿梭框使用方法详解
Jan 19 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/07/05 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
使用vant的地域控件追加全部选项
2020/11/03 Javascript
Python实现股市信息下载的方法
2015/06/15 Python
解决Python3下map函数的显示问题
2019/12/04 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
用Python开发app后端有优势吗
2020/06/29 Python
python try...finally...的实现方法
2020/11/25 Python
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
软件测试企业面试试卷
2016/07/13 面试题
预备党员思想汇报
2014/01/08 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
给病人的慰问信
2015/03/23 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
详解python网络进程
2021/06/15 Python
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android