Layui选项卡制作历史浏览记录的方法


Posted in Javascript onSeptember 28, 2019

在很多情况下我们需要使用到历史浏览记录这一个功能,自己制作起来有点麻烦,但是layui的element模块给我们带来了不少的功能,这个模块就是Tab选项卡,例如以下的样式。

Layui选项卡制作历史浏览记录的方法

这里是侧边导航样式的部分代码,id用于Tab的lay-id,Url_index是自定义属性,用来存放需要跳转到页面路径,span标签里的文本就是用于Tab的标题。

<ul class="sub">
  <li><span id="Organization" Url_index="/SystemManagement/SystemXX/ZZJG">组织结构</span></li>
  <li><span id="Department" Url_index="/SystemManagement/SystemXX/BuMenGuanLi">部门管理</span></li>
  <li><span id="Employee" Url_index="/SystemManagement/SystemXX/YuanGongGuanLi">员工管理</span></li>
  <li><span id="User" Url_index="/SystemManagement/SystemXX/YongHuiGuanLi">用户管理</span></li>
</ul>

这一段是Tab的代码,ul就是存放选项卡标题的,每一个li标签就代表着一个选项,这里面已经有一个li标签,是存放首页的,因为需求需要不能删除首页,i标签存放的是删除的图标,可设定为display:none;隐藏掉。也可以不写当前的这个li直接点击侧边再生成选项。

下面的div是存放内容的我们需要在每一个内容里添加一个子页面进行存放我们点击后跳转到页面。

<div class="layui-tab" lay-filter="Tab_LiShiJiLu" lay-allowClose="true" style="background:#fff;">
  <ul class="layui-tab-title" id="deleteSpan" style="margin:0px 40px 0px 40px;left:0px">
    <li class="layui-this" lay-id="HomePage" id="positionLeft">
     <img src="~/Content/img/3Dpng/png-0060.png" style="width:20px;height:20px;margin-bottom:5px;" />
     <i class="layui-icon layui-unselect layui-tab-close" style="display:none;" οnclick="delTab()">ဆ</i>
    </li>
  </ul>
  <div class="layui-tab-content" id="tab_Size" style="padding:0px;">
    <div class="layui-tab-item layui-show">
     <iframe id="content" scrolling="auto" style="height:630px;" src="/Main/HomePage"></iframe>
    </div>
  </div>
</div>

另外需要声明一个存放已经生成选项卡的id的数组,这个数组要为全局变量,因为后面删除时还需要使用到。

var LiShiLiuLanJiLus = new Array();//保存历史浏览记录

下面是为侧边导航添加点击样式以及添加选项卡的操作。该个方法就是点击侧边导航的内容触发的。

Layui选项卡制作历史浏览记录的方法

添加点样式这一个我就不说了,每一个人的样式不一样,我是通过给他们添加一个我已经写好了的类,判断是否有这个类,如果有就移除,然后给当前点击到的这个标签添加该类名。

然后就是获取点击的需要的内容了,就是上面说的三个值。跳过某个页面,也就是说点击时该页面不用添加到选项卡中。

Layui选项卡制作历史浏览记录的方法

接着就用要使用到刚刚的数组了,用数组判断当前点击的内容是否已经添加到选项卡中。

Layui选项卡制作历史浏览记录的方法

判断如果state状态值为true即为可添加,然后就执行添加选项卡的代码。最后再切换一下选项卡即可。

Layui选项卡制作历史浏览记录的方法

切换选项卡时同时也要切换侧边导航的样式。

Layui选项卡制作历史浏览记录的方法

下面是删除的代码,删除选项卡的同时也要把存放选项卡数据的数组的相应内容删除掉。

Layui选项卡制作历史浏览记录的方法

这样一个历史记录就是完成了。

最后就是全部的js代码

var LiShiLiuLanJiLus = new Array();//保存历史浏览记录
var element;
$(function () {
 //===注意:选项卡 依赖 element 模块,否则无法进行功能性操作
 layui.use(['element'], function () {
   element = layui.element;
 
   //监听选项卡的切换事件
   element.on('tab(Tab_LiShiJiLu)', function (data) {
    //获取lay-id
    var lay_id = $(this).attr("lay-id");
    //为侧边导航添加样式
    if ($("ul.sub li span").hasClass("clickStyle")) {
     $("ul.sub li span.clickStyle").removeClass("clickStyle");
     $("#" + lay_id).addClass("clickStyle");
    }
   });
 
 });
 
 //===为侧边导航添加点击样式&&添加选项卡
 $("ul.sub li span").click(function () {
   //选中侧边导航,为其添加样式
   if ($("ul.sub li span").hasClass("clickStyle")) {
    $("ul.sub li span.clickStyle").removeClass("clickStyle");//清除上一个的样式
   }
   $(this).addClass("clickStyle");//为当前的span加上样式
 
   //获取相应的内容
   var thisOnclickTxt = $(this).text();//获取标题(用于选项卡的标题)
   var thisOnclickId = $(this).prop("id");//获取标签id值(用于选项卡的lay-id值)
   var thisOnclickUrl = $(this).attr("Url_index");//获取跳转到路径
   //跳过该页面
   if (thisOnclickTxt == "锁屏休息") {
    return;
   }
   if (thisOnclickTxt == "注销登陆") {
    return;
   }
 
   //判断是否要添加选项卡
   var state = true;//声明一个状态
   //循环数组内容
   for (var i = 0; i < LiShiLiuLanJiLus.length; i++) {
    //判断判断该选中内容是否存在数组内
    if (thisOnclickId == LiShiLiuLanJiLus[i]) {
     //存在,把状态值改为false
     state = false;
    }
   }
 
   if (state == true) {
    LiShiLiuLanJiLus.push(thisOnclickId);//向数组后面插入内容
    //添加选项
    element.tabAdd('Tab_LiShiJiLu', {//Tab_LiShiJiLu为lay-filter=""相对应的值
      title: thisOnclickTxt + '<i class="layui-icon layui-unselect layui-tab-close" οnclick="delTab()">ဆ</i>',//标题
      content: '<iframe id="content" scrolling="auto" style="height:630px;" src="' + thisOnclickUrl + '"></iframe>', //传如子页面
      id: thisOnclickId,//lay-id
     });
 
    }
 
    //切换选项卡
    element.tabChange('Tab_LiShiJiLu', thisOnclickId);
 
 });
});
 
 //删除选项卡
 function delTab() {
   $(".layui-tab").on("click", function (e) {
    if ($(e.target).is(".layui-tab-close")) {
     var deltab = $(e.target).parent().attr("lay-id");//输出哪个tab被点击,没有值时返回undefined
     element.tabDelete('Tab_LiShiJiLu', deltab); //删除 lay-id="xxx" 的这一项
 
     //循环数组内容
     for (var i = 0; i < LiShiLiuLanJiLus.length; i++) {
      if (deltab == LiShiLiuLanJiLus[i]) {
       LiShiLiuLanJiLus.splice(i, 1);//删除数组的一个元素,i为当前元素在数组内的位置
      }
     }
    }
   });
 }

以上这篇Layui选项卡制作历史浏览记录的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js表格分页实现代码
Sep 18 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
Mar 04 Javascript
JavaScript实现的链表数据结构实例
Apr 02 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
Sep 15 Javascript
JS简单实现String转Date的方法
Mar 02 Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 Javascript
基于Layer+jQuery的自定义弹框
May 26 Javascript
详解使用create-react-app添加css modules、sasss和antd
Jul 31 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
Aug 08 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
Feb 04 Javascript
Vue 组件复用多次自定义参数操作
Jul 27 Javascript
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
Layui带搜索的下拉框的使用以及动态数据绑定方法
Sep 28 #Javascript
layui的select联动实现代码
Sep 28 #Javascript
关于layui的下拉搜索框异步加载数据的解决方法
Sep 28 #Javascript
layui的数据表格+springmvc实现搜索功能的例子
Sep 28 #Javascript
layui下拉列表select实现可输入查找的方法
Sep 28 #Javascript
解决layui下拉框监听问题(监听不到值的变化)
Sep 28 #Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
Sep 28 #Javascript
You might like
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
layui button 按钮弹出提示窗口,确定才进行的方法
2019/09/06 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
python根据出生日期获得年龄的方法
2015/03/31 Python
python中for语句简单遍历数据的方法
2015/05/07 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
Python常见工厂函数用法示例
2018/03/21 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
查看python下OpenCV版本的方法
2018/08/03 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
奥巴马英文演讲稿
2014/05/15 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
500字作文之周记
2019/12/13 职场文书