layui自定义ajax左侧三级菜单


Posted in Javascript onJuly 26, 2019

本文实例为大家分享了layui自定义ajax左侧三级菜单的具体代码,供大家参考,具体内容如下

HTML代码: 需引入layui.css代码

<!-- 左侧的菜单 -->
<div class="layui-side layui-bg-black" id="admin-side">
 <div class="layui-side-scroll" id="admin-navbar-side" lay-filter="side">
  
  
 </div>
</div>
<!-- 右侧tab选项卡和内容 -->                  
<div class="layui-body" style="bottom: 0;border-left: solid 2px #1AA094;" id="admin-body">
 <div class="layui-tab admin-nav-card layui-tab-brief" lay-filter="admin-tab" lay-allowclose="true">
 <ul class="layui-tab-title"> <!-- tab选项卡标题 -->
 <li class="layui-this">
 <i class="fa fa-dashboard" aria-hidden="true"></i>
 <cite>控制面板</cite>
 </li>
 </ul>
 <div class="layui-tab-content" style="min-height: 150px; padding: 5px 0 0 0;"> <!-- tab选项卡内容 -->
 <div class="layui-tab-item layui-show">
 <iframe src="main.html"></iframe>
 </div>
 </div>
 </div>
</div>

js代码:需引入 layui.all.js

var $ = layui.jquery,
 element = layui.element(),
 form = layui.form();
var html = '';
//获取菜单
$.ajax({
 url:"../manage/permissionList?type=1",
 type:"post",
 dataType:"json",
 data:{},
 success:function(data){
 var navs=data.result;
 $.each(navs,function(i,item){
 html += '<dl>';
 html += '<dt><a href="javascript:;" data-url="'+item.url+'" nav-id="'+item.id+'"><i class="'+item.icon+'"></i><cite>'+item.title+'</cite></a></dt>';
 //如果有第二级菜单
 if(item.children !== undefined && item.children.length > 0){
 $.each(item.children,function(j,item2){
  html += '<dd>';
  html += '<a href="javascript:;" data-url="'+item2.url+'" nav-id="'+item2.id+'"><i class="'+item2.icon+'"></i><cite>'+item2.title+'</cite></a>';
  //如果有三级菜单
  if(item2.children !== undefined && item2.children.length > 0){
  html += '<ul>';
  $.each(item2.children,function(k,item3){
  html += '<li>'+
   '<a href="javascript:;" data-url="'+item3.url+'" nav-id="'+item3.id+'">'+
   '<i class="'+item3.icon+'"></i>'+
   '<cite>'+item3.title+'</cite>'+
   '</a>'+
   '</li>';
  });
  html += '</ul>';
  }
  html += '</dd>';
 });
 }
 html += '</dl>';
 });
 //渲染html
 $('#admin-navbar-side').html(html); 
 }
});
 
//触发事件
var active = {
 tabAdd: function(obj){
  //新增一个Tab项
  element.tabAdd('admin-tab', {
  title: $(this).html()//用于演示
  ,content: '<iframe src="'+$(this).attr('data-url')+'"></iframe>'
  });
  element.tabChange("admin-tab", $('.layui-tab-title li').length - 1); 
 },
 tabDelete: function(index) { 
  //删除指定Tab项 
  element.tabDelete('admin-tab', index); //删除(注意序号是从0开始计算) 
 }
 ,tabChange: function(lay_id){
  //切换到指定Tab项
  element.tabChange('admin-tab', lay_id); //切换到:用户管理
 }
};
//添加tab
$(document).on('click','a',function(){
 if(!$(this)[0].hasAttribute('data-url') || $(this).attr('data-url')==='')return;
 var title = $.trim($(this).text()); 
 var tabs = $(".layui-tab-title").children(); 
 for(var i = 0; i < tabs.length; i++) {
  if($(tabs).eq(i).children('cite').text() == title) {
   element.tabChange('admin-tab', i); 
   return;
  } 
 }
 active["tabAdd"].call(this);
 resize();
 active.tabChange($(".layui-tab-title").children().length - 1);
});
 
//iframe自适应
function resize(){
 var $content = $('.admin-nav-card .layui-tab-content');
 $content.height($(this).height() - 147);
 $content.find('iframe').each(function() {
 $(this).height($content.height());
 });
}
$(window).on('resize', function() {
 var $content = $('.admin-nav-card .layui-tab-content');
 $content.height($(this).height() - 147);
 $content.find('iframe').each(function() {
 $(this).height($content.height());
 });
}).resize();
 
 
//toggle左侧菜单
$('.admin-side-toggle').on('click', function() {
 var sideWidth = $('#admin-side').width();
 if(sideWidth === 200) {
 $('#admin-body').animate({
 left: '0'
 }); //admin-footer
 $('#admin-footer').animate({
 left: '0'
 });
 $('#admin-side').animate({
 width: '0'
 });
 } else {
 $('#admin-body').animate({
 left: '200px'
 });
 $('#admin-footer').animate({
 left: '200px'
 });
 $('#admin-side').animate({
 width: '200px'
 });
 }
});
$(document).on('click','dt',function(){
 $(this).parent().find('dd').toggle();
});
$(document).on('click','dd a',function(){
 $(this).next('ul').toggle();
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
找到一点可怜的关于dojo资料,谢谢作者!
Dec 06 Javascript
js正则表达exec与match的区别说明
Jan 29 Javascript
AngularJS入门教程之AngularJS指令
Apr 18 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
Jul 04 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
Feb 09 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
Feb 19 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
将angular.js项目整合到.net mvc中的方法详解
Jun 29 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
Mar 22 Javascript
node实现简单的增删改查接口实例代码
Aug 22 Javascript
Vue组件间数据传递的方式(3种)
Jul 13 Javascript
jQuery实现简单弹幕制作
Dec 10 jQuery
layui递归实现动态左侧菜单
Jul 26 #Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
Jul 26 #Javascript
bootstrap-table+treegrid实现树形表格
Jul 26 #Javascript
Vue实现商品分类菜单数量提示功能
Jul 26 #Javascript
vue实现滑动切换效果(仅在手机模式下可用)
Jun 29 #Javascript
微信小程序设置滚动条过程详解
Jul 25 #Javascript
vuejs移动端实现div拖拽移动
Jul 25 #Javascript
You might like
php 三维饼图的实现代码
2008/09/28 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
php实现数字补零的方法总结
2018/09/12 PHP
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
2016/12/29 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
python多重继承实例
2014/10/11 Python
python实现telnet客户端的方法
2015/04/15 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
python pygame实现2048游戏
2018/11/20 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
常用的HTML5列表标签
2017/06/20 HTML / CSS
企业车辆管理制度
2014/01/24 职场文书
企业精神口号
2014/06/11 职场文书
2014年科普工作总结
2014/12/06 职场文书
综合测评个人总结
2015/03/03 职场文书
学生检讨书范文
2019/06/24 职场文书
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android