layui實(shí)現(xiàn)tab的添加拒絕重復(fù)的方法
layui中tab的添加:重復(fù)添加,沒(méi)有自動(dòng)跳轉(zhuǎn)肯定讓你煩了很久吧,我也是花了很久才解決的
前提是這樣的:我點(diǎn)擊不同按鈕生成對(duì)應(yīng)tab,而且再點(diǎn)擊前已經(jīng)有一個(gè)tab了(比如說(shuō):‘首頁(yè)‘,個(gè)人需求而已)
我的思路是這樣的:每添加一個(gè)tab用鏈表存儲(chǔ)其id,通過(guò)id判斷是否存在,并確定是添加tab還是跳轉(zhuǎn)到指定tab。
刪除時(shí),監(jiān)聽(tīng)tab的刪除,然后從鏈表里刪除對(duì)應(yīng)id。但是在element.on('tabDelete',function(data){});中得不到你刪除tab的id。有幸的是,能得到下標(biāo):data.index。我用其表示鏈表中的‘第幾個(gè)元素',因?yàn)閐ata.index的值是“流動(dòng)”的,以這種方式表示(考慮到操作的方式)很適合用鏈表來(lái)形容(建議你自己console.log(data.index)來(lái)看看)。
好了,上代碼
list.js:我把它寫(xiě)在了公共類(lèi)里,你按照你自己的需求來(lái)
function Node(v){ this.value=v; this.next=null; } function ArrayList(){ this.head=new Node(null); this.tail = this.head; //在尾部添加節(jié)點(diǎn) this.append=function(v){ node = new Node(v); this.tail.next=node; this.tail=node; } //在指定位置插入 this.insertAt=function(ii,v){ node = new Node(v); //找到位置的節(jié)點(diǎn) tempNode=this.head; for(i=0;i<ii;i++){ if(tempNode.next!=null){ tempNode=tempNode.next; }else{ break; } } node.next=tempNode.next; tempNode.next = node; } //刪除指定節(jié)點(diǎn) this.removeAt=function(ii){ node1=this.head; //要?jiǎng)h除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn) for(i=0;i<ii;i++){ if(node1.next!=null){ node1=node1.next; }else{ break; } } node2=node1.next; //要?jiǎng)h除的節(jié)點(diǎn) if(node2!=null){ node1.next = node2.next; if(node2.next==null){ this.tail=node1; } } } //查找值 this.find=function(v){ var nodefin=this.head; while(nodefin.value!=v){ if(nodefin.next!=null){ nodefin=nodefin.next; }else{break;} } return nodefin; } //查找某個(gè)節(jié)點(diǎn)的值 this.findv=function(ii){ var nodefv = this.head; for(var i =0;i<ii;i++){ if(nodefv.next!=null){ nodefv=nodefv.next; } } return nodefv; } //顯示連表中的值 this.show=function() { var Node=this.head; while(Node!=null) { console.log(Node.value); Node=Node.next; } } }
js:
/** * 點(diǎn)擊節(jié)點(diǎn)添加tab * title:選項(xiàng)卡標(biāo)題,id:選項(xiàng)卡的id,url:選項(xiàng)卡所顯示的內(nèi)容《用ifream》 */ var arry = new ArrayList(); arry.append("xtsy");//這就是我的首頁(yè),你如果不需要的話,刪除即可 function tabAdd(title,id,url) { //判斷tab是否存在 if(arry.find(id).value!=id){ element.tabAdd('tab', { title: title //用于演示 ,content:"<iframe src='"+ url + "' frameborder='0' style='width:100%;height:470px;'></iframe>" ,id:id }); arry.append(id); } //切換tab element.tabChange('tab',id); } //監(jiān)聽(tīng)tab刪除 element.on('tabDelete', function(data){ arry.removeAt(data.index); });
以上這篇layui實(shí)現(xiàn)tab的添加拒絕重復(fù)的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
setInterval計(jì)時(shí)器不準(zhǔn)的問(wèn)題解決方法
在js中如果打算使用setInterval進(jìn)行倒數(shù),計(jì)時(shí)等功能,往往是不準(zhǔn)確的,針對(duì)這個(gè)問(wèn)題,本文有個(gè)不錯(cuò)的解決方案2014-05-05JS OOP包機(jī)制,類(lèi)創(chuàng)建的方法定義
JS OOP包機(jī)制,類(lèi)創(chuàng)建的方法定義,需要的朋友可以參考下。2009-11-11JavaScript實(shí)現(xiàn)圖片懶加載的三種方案詳解
圖片懶加載,當(dāng)圖片出現(xiàn)在可視區(qū)域再進(jìn)行加載,提升用戶(hù)的體驗(yàn),這篇文章主要為大家整理了三個(gè)常用的圖片懶加載實(shí)現(xiàn)方法,希望對(duì)大家有所幫助2023-12-12微信小程序?qū)崿F(xiàn)圖片上傳功能實(shí)例(前端+PHP后端)
這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)圖片上傳功能的相關(guān)內(nèi)容,文中詳細(xì)介紹了前端+PHP后端的示例代碼,對(duì)大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01javascript IE中的DOM ready應(yīng)用技巧
當(dāng)我們想在頁(yè)面加載之后執(zhí)行某個(gè)函數(shù),肯定會(huì)想到onload了 但onload在瀏覽器看來(lái),就是頁(yè)面上的東西全部都加載完畢后才能發(fā)生,但那就為時(shí)已晚了。2008-07-07原生JS實(shí)現(xiàn)的簡(jiǎn)單輪播圖功能【適合新手】
這篇文章主要介紹了原生JS實(shí)現(xiàn)的簡(jiǎn)單輪播圖功能,結(jié)合實(shí)例形式分析了基于javascript定時(shí)器控制頁(yè)面元素動(dòng)態(tài)變換實(shí)現(xiàn)輪播圖的相關(guān)操作技巧,需要的朋友可以參考下2018-08-08