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 相关文章推荐
js+html+css实现鼠标移动div实例
Jan 30 Javascript
常用的JavaScript模板引擎介绍
Feb 28 Javascript
javascript继承的六大模式小结
Apr 13 Javascript
javascript和jquery实现用户登录验证
May 04 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
Javascript仿京东放大镜的效果
Mar 01 Javascript
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
JQuery 获取Dom元素的实例讲解
Jul 08 jQuery
vue接入腾讯防水墙代码
May 07 Javascript
JavaScript键盘事件响应顺序详解
Sep 30 Javascript
在HTML5 localStorage中存储对象的示例代码
Apr 21 Javascript
详细谈谈JavaScript中循环之间的差异
Aug 23 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
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
讲解Python中的递归函数
2015/04/27 Python
Python模块包中__init__.py文件功能分析
2016/06/14 Python
python实现狄克斯特拉算法
2019/01/17 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
django 微信网页授权认证api的步骤详解
2019/07/30 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
物流司机岗位职责
2013/12/28 职场文书
创新比赛获奖感言
2014/02/13 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏