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 相关文章推荐
限制文本字节数js代码
Mar 06 Javascript
jquery 操作DOM的基本用法分享
Apr 05 Javascript
javascript函数定义的几种区别小结
Jan 06 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
Node.js中HTTP模块与事件模块详解
Nov 14 Javascript
jQuery中filter()方法用法实例
Jan 06 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
May 28 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
Apr 10 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
tween.js缓动补间动画算法示例
Feb 13 Javascript
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 jQuery
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
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
php 生成短网址原理及代码
2014/01/23 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
javascript cookies操作集合
2010/04/12 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
js实现随机点名小功能
2017/08/17 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
新手如何快速理解js异步编程
2019/06/24 Javascript
python实现给数组按片赋值的方法
2015/07/28 Python
Python实现Sqlite将字段当做索引进行查询的方法
2016/07/21 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
团支书的期末学习总结自我评价
2013/11/01 职场文书
乡镇干部先进事迹材料
2014/02/03 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
党小组考察意见
2015/06/02 职场文书
四风之害观后感
2015/06/09 职场文书
遗失证明范文
2015/06/19 职场文书
老乡会致辞
2015/07/28 职场文书
详解SQL的窗口函数
2022/04/21 Oracle
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android