Layui選項卡制作歷史瀏覽記錄的方法
在很多情況下我們需要使用到歷史瀏覽記錄這一個功能,自己制作起來有點麻煩,但是layui的element模塊給我們帶來了不少的功能,這個模塊就是Tab選項卡,例如以下的樣式。
這里是側(cè)邊導航樣式的部分代碼,id用于Tab的lay-id,Url_index是自定義屬性,用來存放需要跳轉(zhuǎn)到頁面路徑,span標簽里的文本就是用于Tab的標題。
<ul class="sub"> <li><span id="Organization" Url_index="/SystemManagement/SystemXX/ZZJG">組織結(jié)構(gòu)</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標簽就代表著一個選項,這里面已經(jīng)有一個li標簽,是存放首頁的,因為需求需要不能刪除首頁,i標簽存放的是刪除的圖標,可設(shè)定為display:none;隱藏掉。也可以不寫當前的這個li直接點擊側(cè)邊再生成選項。
下面的div是存放內(nèi)容的我們需要在每一個內(nèi)容里添加一個子頁面進行存放我們點擊后跳轉(zhuǎn)到頁面。
<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>
另外需要聲明一個存放已經(jīng)生成選項卡的id的數(shù)組,這個數(shù)組要為全局變量,因為后面刪除時還需要使用到。
var LiShiLiuLanJiLus = new Array();//保存歷史瀏覽記錄
下面是為側(cè)邊導航添加點擊樣式以及添加選項卡的操作。該個方法就是點擊側(cè)邊導航的內(nèi)容觸發(fā)的。
添加點樣式這一個我就不說了,每一個人的樣式不一樣,我是通過給他們添加一個我已經(jīng)寫好了的類,判斷是否有這個類,如果有就移除,然后給當前點擊到的這個標簽添加該類名。
然后就是獲取點擊的需要的內(nèi)容了,就是上面說的三個值。跳過某個頁面,也就是說點擊時該頁面不用添加到選項卡中。
接著就用要使用到剛剛的數(shù)組了,用數(shù)組判斷當前點擊的內(nèi)容是否已經(jīng)添加到選項卡中。
判斷如果state狀態(tài)值為true即為可添加,然后就執(zhí)行添加選項卡的代碼。最后再切換一下選項卡即可。
切換選項卡時同時也要切換側(cè)邊導航的樣式。
下面是刪除的代碼,刪除選項卡的同時也要把存放選項卡數(shù)據(jù)的數(shù)組的相應(yīng)內(nèi)容刪除掉。
這樣一個歷史記錄就是完成了。
最后就是全部的js代碼
var LiShiLiuLanJiLus = new Array();//保存歷史瀏覽記錄 var element; $(function () { //===注意:選項卡 依賴 element 模塊,否則無法進行功能性操作 layui.use(['element'], function () { element = layui.element; //監(jiān)聽選項卡的切換事件 element.on('tab(Tab_LiShiJiLu)', function (data) { //獲取lay-id var lay_id = $(this).attr("lay-id"); //為側(cè)邊導航添加樣式 if ($("ul.sub li span").hasClass("clickStyle")) { $("ul.sub li span.clickStyle").removeClass("clickStyle"); $("#" + lay_id).addClass("clickStyle"); } }); }); //===為側(cè)邊導航添加點擊樣式&&添加選項卡 $("ul.sub li span").click(function () { //選中側(cè)邊導航,為其添加樣式 if ($("ul.sub li span").hasClass("clickStyle")) { $("ul.sub li span.clickStyle").removeClass("clickStyle");//清除上一個的樣式 } $(this).addClass("clickStyle");//為當前的span加上樣式 //獲取相應(yīng)的內(nèi)容 var thisOnclickTxt = $(this).text();//獲取標題(用于選項卡的標題) var thisOnclickId = $(this).prop("id");//獲取標簽id值(用于選項卡的lay-id值) var thisOnclickUrl = $(this).attr("Url_index");//獲取跳轉(zhuǎn)到路徑 //跳過該頁面 if (thisOnclickTxt == "鎖屏休息") { return; } if (thisOnclickTxt == "注銷登陸") { return; } //判斷是否要添加選項卡 var state = true;//聲明一個狀態(tài) //循環(huán)數(shù)組內(nèi)容 for (var i = 0; i < LiShiLiuLanJiLus.length; i++) { //判斷判斷該選中內(nèi)容是否存在數(shù)組內(nèi) if (thisOnclickId == LiShiLiuLanJiLus[i]) { //存在,把狀態(tài)值改為false state = false; } } if (state == true) { LiShiLiuLanJiLus.push(thisOnclickId);//向數(shù)組后面插入內(nèi)容 //添加選項 element.tabAdd('Tab_LiShiJiLu', {//Tab_LiShiJiLu為lay-filter=""相對應(yīng)的值 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" 的這一項 //循環(huán)數(shù)組內(nèi)容 for (var i = 0; i < LiShiLiuLanJiLus.length; i++) { if (deltab == LiShiLiuLanJiLus[i]) { LiShiLiuLanJiLus.splice(i, 1);//刪除數(shù)組的一個元素,i為當前元素在數(shù)組內(nèi)的位置 } } } }); }
以上這篇Layui選項卡制作歷史瀏覽記錄的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript中???、??=、?.和?||的區(qū)別淺析
在?JS?中,???運算符被稱為非空運算符,下面這篇文章主要給大家介紹了關(guān)于JavaScript中???、??=、?.和?||區(qū)別的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-08-08D3.js 從P元素的創(chuàng)建開始(顯示可加載數(shù)據(jù))
D3是一個基于數(shù)據(jù)操作的可視化js庫,認識d3,就從最基礎(chǔ)的顯示可加載數(shù)據(jù)談起,需要的朋友可以參考下2014-10-10layUI使用layer.open,在content打開數(shù)據(jù)表格,獲取值并返回的方法
今天小編就為大家分享一篇layUI使用layer.open,在content打開數(shù)據(jù)表格,獲取值并返回的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09JS實現(xiàn)簡單的選擇題測評系統(tǒng)代碼思路詳解(demo)
本文給大家分享js實現(xiàn)簡單的選擇題測評系統(tǒng)實例代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-09-09