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实现仿Windows关机效果
Mar 10 Javascript
jQuery 定时局部刷新(setInterval)
Nov 19 Javascript
使用jQuery的将桌面应用程序引入浏览器
Nov 19 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
Oct 29 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
Mar 17 Javascript
table insertRow、deleteRow定义和用法总结
May 14 Javascript
javascript DIV实现跟随鼠标移动
Mar 19 Javascript
request请求获取参数的实现方法(post和get两种方式)
Sep 27 Javascript
javascript实现滑动解锁功能
Mar 22 Javascript
jquery ztree实现右键收藏功能
Nov 20 jQuery
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
Mar 06 Javascript
vue  directive定义全局和局部指令及指令简写
Nov 20 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
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
Pycharm远程调试openstack的方法
2017/11/21 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
浅谈django 重载str 方法
2020/05/19 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
质检部部长职责
2013/12/16 职场文书
心得体会怎么写
2013/12/30 职场文书
考试不及格检讨书
2014/01/09 职场文书
电子邮箱格式怎么写
2014/01/12 职场文书
服务承诺书怎么写
2014/05/24 职场文书
业务员年终工作总结2015
2015/05/28 职场文书
2019年大学推荐信
2019/06/24 职场文书