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 prototype 格式化数字 By shawl.qiu
Apr 02 Javascript
javascript while语句和do while语句的区别分析
Dec 08 Javascript
DWR Ext 加载数据
Mar 22 Javascript
JavaScript中OnLoad几种使用方法
Dec 15 Javascript
CSS(js)限制页面显示的文本字符长度
Dec 27 Javascript
文字不间断滚动(上下左右)实例代码
Apr 21 Javascript
关于JavaScript对象的动态选择及遍历对象
Mar 10 Javascript
详谈js模块化规范
Jul 07 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
使用Jenkins部署React项目的方法步骤
Mar 11 Javascript
react项目如何使用iconfont的方法步骤
Mar 13 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
Sep 17 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下目前为目最全的CURL中文说明
2010/08/01 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
用javascript实现给图片加链接
2007/08/15 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
简单了解django索引的相关知识
2019/07/17 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
Android面试题附答案
2014/12/08 面试题
师范大学音乐表演专业求职信
2013/10/23 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
员工薪酬福利制度
2014/01/17 职场文书
网络书店创业计划书
2014/02/07 职场文书
入学申请自荐信范文
2014/02/26 职场文书
计算机专业职业规划
2014/02/28 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
维稳承诺书
2015/01/20 职场文书
学校运动会通讯稿
2015/07/18 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
Python利用zhdate模块实现农历日期处理
2022/03/31 Python