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 相关文章推荐
innerText和innerHTML 一些问题分析
May 18 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
Aug 15 Javascript
editable.js 基于jquery的表格的编辑插件
Oct 24 Javascript
javascript 手动给表增加数据的小例子
Jul 10 Javascript
Jquery实现图片预加载与延时加载的方法
Dec 22 Javascript
JavaScript中定义函数的三种方法
Mar 12 Javascript
详解用node搭建简单的静态资源管理器
Aug 09 Javascript
详解vue-cli中模拟数据的两种方法
Jul 03 Javascript
VUE实现可随意拖动的弹窗组件
Sep 25 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
Oct 30 Javascript
JavaScript解析JSON数据示例
Jul 16 Javascript
浅谈vue的第一个commit分析
Jun 08 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
javascript时区函数介绍
2012/09/14 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
Node.js学习入门
2017/01/03 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
python实现bucket排序算法实例分析
2015/05/04 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Python 实现集合Set的示例
2020/12/21 Python
精彩自我鉴定
2014/01/16 职场文书
小学生读书感言
2014/02/12 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
双语教学实施方案
2014/03/23 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
教师自我剖析材料
2014/09/29 职场文书
基层工作经验证明样本
2014/11/16 职场文书
美术教师个人工作总结
2015/02/06 职场文书
2016高考感言
2015/08/01 职场文书
Java 数组的使用
2022/05/11 Java/Android