LayUI之动态选项卡&&iframe的使用

目录

一、前言

二、动态添加选项卡

三、完善动态选项卡


一、前言

1. 前言 

在上篇文章我们一起利用LayUI实现了动态的左侧菜单栏数据,可是却还没有实现点击菜单建立选项卡并且跳转页面,而这篇文章就让我们一起来实现一波吧!

1.2 选项卡页面静态代码

我们首先在LayUI官网上找到选项卡相关的静态代码放上去:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 引入LayUI -->
<%@ include file="/common/header.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

</head>
<body>
<div class="layui-layout layui-layout-admin">
  <div class="layui-header">
    <div class="layui-logo layui-hide-xs layui-bg-black">会议OA项目</div>
    <!-- 头部区域(可配合layui 已有的水平导航) -->
    <ul class="layui-nav layui-layout-left">
      <!-- 移动端显示 -->
    </ul>
    <!-- 个人头像及账号操作 -->
    <ul class="layui-nav layui-layout-right">
      <li class="layui-nav-item layui-hide layui-show-md-inline-block">
        <a href="javascript:;">
          <img src="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" class="layui-nav-img">
          tester
        </a>
        <dl class="layui-nav-child">
          <dd><a href="">Your Profile</a></dd>
          <dd><a href="">Settings</a></dd>
          <dd><a href="login.jsp">Sign out</a></dd>
        </dl>
      </li>
      <li class="layui-nav-item" lay-header-event="menuRight" lay-unselect>
        <a href="javascript:;">
          <i class="layui-icon layui-icon-more-vertical"></i>
        </a>
      </li>
    </ul>
  </div>
  
  <div class="layui-side layui-bg-black">
    <div class="layui-side-scroll">
      <!-- 左侧导航区域(可配合layui已有的垂直导航) -->
      <ul id="menu" class="layui-nav layui-nav-tree" lay-filter="menu">
      </ul>
    </div>
  </div>
  
  <div class="layui-body">
    <!-- 内容主体区域(选项卡) -->
    <div class="layui-tab">
	  <ul class="layui-tab-title">
	    <li class="layui-this">首页</li>
	  </ul>
	  <div class="layui-tab-content" style="height: 100px;">
	    <div class="layui-tab-item layui-show">Leaf</div>
	  </div>
	</div>
  </div>
  
  <div class="layui-footer">
    <!-- 底部固定区域 -->
            底部固定区域
  </div>

</div>
<script>
  
</script>
</body>
</html>

 


二、动态添加选项卡

2.1 编写动态添加选项卡代码

我们这次把js代码单独封装到一个file类:index.js里面!

 这里放上代码~

  //JS
  let $,element;
  layui.use(['element', 'jquery'], function(){
		  
	  element = layui.element
	  ,$ = layui.jquery;
		  
	  //绑定菜单数据
	  $.ajax({
		 url:'permission.action?methodName=menus'
		 ,dataType:'json'
		 ,success:function(data){
		 	 let htmlstr = '';
			 $.each(data,function(i,n){
				 htmlstr += '<li class="layui-nav-item layui-nav-itemed">';
				 htmlstr += '	<a class="" href="javascript:;">'+data[i].text+'</a>';
				 //判断当前节点是否存在子节点
				 if(data[i].hasChildren){
					 htmlstr += '<dl class="layui-nav-child">';
					 let children = data[i].children;
					 $.each(children,function(index,node){
						 htmlstr += '<dd><a href="javascript:;" onClick="openTabs(\''+children[index].text+'\',\''+children[index].attributes.self.url+'\',\''+children[index].id+'\');">'+children[index].text+'</a></dd>';
					 });
					 htmlstr += '</dl>';
				 }
				 htmlstr += '</li>';
			 });
			 $("#menu").html(htmlstr);
		 }
	  });
	  
	});

//动态添加选项卡
function openTabs(title,url,id) {
		let $node = $("li[lay-id='"+id+"']");
		//判断
		if($node.length == 0){
			//新增一个选项卡
			element.tabAdd('demo',{
				title: title //用于演示
				,content: "<iframe frameborder='0' src='"+url+"' scrolling='auto' style='width:100%;height:100%;'></iframe>"
				,id: id //实际使用一般是规定好的id,这里以时间戳模拟下
			})
		}
		else{
			//选中
			element.tabChange('demo',id);
		}
		
}

这里注意我们写了方法,就要写好点击事件来触发! 

2.2 引入写好的js

根据我们建立的js的位置引入!

<script src="static/js/index.js"></script>

2.3 测试

我们写好到这一步就可以测试一下了

 

但是经过测试我们发现还是有不完善的地方,比如:

会重复建立选项卡;

选项卡名称不是菜单名;


三、完善动态选项卡

3.1 在<!-- 内容主体区域 -->加入lay-filter="demo"

我们只需要在内容主体区域的这行代码加入lay-filter="demo"就好了:

    <!-- 内容主体区域 -->
    <div class="layui-tab" lay-filter="demo">
	  <ul class="layui-tab-title">
	    <li class="layui-this">首页</li>
	  </ul>
	  <div class="layui-tab-content" style="height: 100px;">
	    <div class="layui-tab-item layui-show">Leaf</div>
	  </div>
	</div>

测试结果

到这里我们就写好啦,我们直接测试一下!


OK,以上就是Leaf今天带来的学习笔记分享,我们下次见啦!!!


版权声明:本文为qq_63492318原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。