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 相关文章推荐
[原创]来自ImageSee官方 JavaScript图片浏览器
Jan 16 Javascript
浅析js设置控件的readonly与enabled属性问题
Dec 25 Javascript
jquery常用特效方法使用示例
Apr 25 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
May 16 Javascript
js delete 用法(删除对象属性及变量)
Aug 24 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
Sep 09 Javascript
JavaScript模拟数组合并concat
Mar 06 Javascript
详解JavaScript for循环中发送AJAX请求问题
Jun 23 Javascript
Bootstrap选项卡动态切换效果
Nov 28 Javascript
jquery select插件异步实时搜索实例代码
Oct 20 jQuery
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
微信小程序实现pdf、word等格式文件上传的方法
Sep 10 Javascript
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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
php计算title标题相似比的方法
2015/07/29 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
python thread 并发且顺序运行示例
2009/04/09 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
python中kmeans聚类实现代码
2018/02/23 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
python绘制直方图和密度图的实例
2019/07/08 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
python 用struct模块解决黏包问题
2020/11/07 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
社区服务活动小结
2014/07/08 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
小学语文国培研修日志
2015/11/13 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript