layui添加动态菜单与选项卡 AJAX请求的例子


Posted in Javascript onSeptember 25, 2019

如下所示:

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" rel="external nofollow" 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添加动态菜单与选项卡 AJAX请求的例子

以上这篇layui添加动态菜单与选项卡 AJAX请求的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 闭包引起的IE内存泄露分析
May 23 Javascript
php对mongodb的扩展(初识如故)
Nov 11 Javascript
编写针对IE的JS代码两种编写方法
Jan 30 Javascript
JavaScript中的noscript元素属性位置及作用介绍
Apr 11 Javascript
JavaScript数字和字符串转换示例
Mar 26 Javascript
node.js解决获取图片真实文件类型的问题
Dec 20 Javascript
jQuery多个input求和的实现方法
Feb 12 Javascript
JavaScript 事件对象介绍
Apr 13 Javascript
js带前后翻页的图片切换效果代码分享
Sep 08 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
Feb 14 Javascript
详解html-webpack-plugin用法全解
Jan 22 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
Nov 10 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
Sep 25 #Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
Sep 25 #Javascript
vue+axios实现post文件下载
Sep 25 #Javascript
vue + axios get下载文件功能
Sep 25 #Javascript
layer.open组件获取弹出层页面变量、函数的实例
Sep 25 #Javascript
jquery中attr、prop、data区别与用法分析
Sep 25 #jQuery
axios实现文件上传并获取进度
Mar 25 #Javascript
You might like
COM in PHP (winows only)
2006/10/09 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
PHP session 会话处理函数
2016/06/06 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
初始Nodejs
2014/11/08 NodeJs
js判断是否按下了Shift键的方法
2015/01/27 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
window.onerror()的用法与实例分析
2016/01/27 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
Python 学习笔记
2008/12/27 Python
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
Python类的继承和多态代码详解
2017/12/27 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
实时获取Python的print输出流方法
2019/01/07 Python
印度在线购物网站:Paytmmall
2019/07/24 全球购物
最新大学职业规划书范文
2013/12/30 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
灵山大佛导游词
2015/02/04 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
门面租赁合同范文
2019/08/06 职场文书
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers