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中function多重理解
Aug 28 Javascript
深入理解JavaScript 函数
Jun 06 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
Dec 14 Javascript
jquery实现手机端单店铺购物车结算删除功能
Feb 22 Javascript
用jQuery实现圆点图片轮播效果
Mar 19 Javascript
jquery加载单文件vue组件的方法
Jun 20 jQuery
vue 简单自动补全的输入框的示例
Mar 12 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
Oct 09 Javascript
jQuery-ui插件sortable实现自由拖动排序
Dec 01 jQuery
微信小程序保存多张图片的实现方法
Mar 05 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
Aug 03 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中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
PHP多进程编程实例详解
2017/07/19 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
js自带函数备忘 数组
2006/12/29 Javascript
Javascript动态绑定事件的简单实现代码
2010/12/25 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
js实现分页功能
2017/05/24 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
Python的Django框架安装全攻略
2015/07/15 Python
简单学习Python time模块
2016/04/29 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
工程师求职简历的自我评价分享
2013/10/10 职场文书
文艺晚会主持词
2014/03/24 职场文书
《四季》教学反思
2014/04/08 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
医药销售自荐书
2014/05/29 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
2014年人事部工作总结
2014/12/03 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
python中filter,map,reduce的作用
2022/06/10 Python