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 fullscreen全屏实现代码
Apr 09 Javascript
学习ExtJS table布局
Oct 08 Javascript
jquery组件使用中遇到的问题整理及解决
Feb 21 Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 Javascript
jquery防止重复执行动画避免页面混乱
Apr 22 Javascript
JavaScript获取某年某月的最后一天附截图
Jun 23 Javascript
angularjs指令中的compile与link函数详解
Dec 06 Javascript
jQuery中innerWidth()方法用法实例
Jan 19 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
AngularJS进行性能调优的7个建议
Dec 28 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
Apr 13 Javascript
JavaScript多线程运行库Nexus.js详解
Dec 22 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
短波问题解答
2021/02/28 无线电
PHP的中问验证码
2006/11/25 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
php中的strpos使用示例
2014/02/27 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
小议javascript 设计模式 推荐
2009/10/28 Javascript
运算符&amp;&amp;的三个不同层次
2013/04/07 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
Python编写检测数据库SA用户的方法
2014/07/11 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
Python中一行和多行import模块问题
2018/04/01 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
django如何连接已存在数据的数据库
2018/08/14 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
Python基于smtplib协议实现发送邮件
2020/06/03 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
外企C语言笔试题
2013/11/10 面试题
员工生日活动方案
2014/08/24 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
学生自我评语
2015/01/04 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
预备党员考察意见范文
2015/06/01 职场文书
小学课改工作总结
2015/08/13 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python
MySQL存储过程及语法详解
2022/08/05 MySQL