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 相关文章推荐
jquery validate.js表单验证的基本用法入门
May 13 Javascript
TinyMCE 新增本地图片上传功能
Nov 05 Javascript
jquery中获取元素的几种方式小结
Jul 05 Javascript
如何让页面加载完成后执行js
Jun 26 Javascript
JavaScript和CSS通过expression实现Table居中显示
Jun 28 Javascript
快速掌握jQuery插件WebUploader文件上传
Nov 07 Javascript
js仿淘宝商品放大预览功能
Mar 15 Javascript
JS时间控制实现动态效果的实例讲解
Jul 31 Javascript
JS基于贪心算法解决背包问题示例
Nov 27 Javascript
微信小程序如何获取openid及用户信息
Jan 26 Javascript
Vue.js 父子组件通信的十种方式
Oct 30 Javascript
axios异步提交表单数据的几种方法
Aug 11 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微信支付接口开发程序
2016/08/02 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
三查三看党性分析材料
2014/02/18 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
放假通知格式
2015/04/14 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android