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 相关文章推荐
lib.utf.js
Aug 21 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
Oct 14 Javascript
jQuery的链式调用浅析
Dec 03 Javascript
javascript同页面多次调用弹出层具体实例代码
Aug 16 Javascript
多种方法实现load加载完成后把图片一次性显示出来
Feb 19 Javascript
Angular 5.0 来了! 有这些大变化
Nov 15 Javascript
详解javascript中的babel到底是什么
Jun 21 Javascript
解决angularjs WdatePicker ng-model的问题
Sep 13 Javascript
vue改变对象或数组时的刷新机制的方法总结
Apr 24 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
Jul 26 Javascript
js+audio实现音乐播放器
Sep 13 Javascript
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python调用shell的方法
2013/11/20 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
如何在python中使用selenium的示例
2017/12/26 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
python梯度下降法的简单示例
2018/08/31 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
自荐书范文
2013/12/08 职场文书
入股协议书范本
2014/04/14 职场文书
岗位明星事迹材料
2014/05/18 职场文书
服务理念标语
2014/06/18 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
安全教育培训心得体会
2016/01/15 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python