0

我已經使用引導程序摺疊構建了一個擴展樹列表。(無手風琴,這似乎是罕見的我學會了當試圖google一下)我遇到的第一個問題是,在頁面重載每個項目的打開/關閉位置,沒有記錄,因此需要保存使用本地存儲。簡單。如何在頁面重新加載時使用一個唯一的打開和關閉狀態標識來修改引導程序摺疊

但是,接下來的問題是讓每個樹項目單獨行動,不記得彼此的立場。因此,我們需要爲每個人項目生成一個唯一的打開和關閉狀態ID,以便它們不會打開和關閉在一起。

UPDATE:

感謝SPViradiya提供了這個簡單的解決方案結合兩種打開,關閉和旋轉箭頭,很少HTML和CSS。

https://jsfiddle.net/SPViradiya/nm6tqxsL/1/

$(document).ready(function() { 
    var getUniqueID = localStorage.getItem('uniqueid'); 
if(typeof getUniqueID == "string") 
{ 
    var parsedUID = JSON.parse(getUniqueID); 
    if(parsedUID != "" && typeof parsedUID == "object") 
    { 
    for(item in parsedUID) 
    { 
     if(parsedUID[item]) 
     { 
     $("#"+item).collapse('show'); 
     console.log($("div[href='#"+item+"']")); 
     $("div[href='#"+item+"']").addClass('rotateOn'); 
     } 
     else 
     { 
     $("#"+item).collapse('hide'); 
     $("div[href='#"+item+"']").removeClass('rotateOn'); 
     } 
    } 
    } 
} 

$('.expand').click(function() { 
    //store the id of the collapsible element 
    $(this).toggleClass('rotateOn'); 
    setTimeout(function(){ 
    var uniqueid = {}; 

    $('.expand').each(function(){ 
     var getID = $(this).attr('href').replace(/#/g,''); 
     uniqueid[getID] = $("#"+getID).hasClass('in'); 
    }); 
    localStorage.setItem('uniqueid', JSON.stringify(uniqueid)); 
    },500); 



}); 

}) 
+0

能否請您讓我們一些HTML結構?我認爲你應該需要以json格式存儲所有需要狀態的分支父id,並在加載時循環。 – SPViradiya

+0

感謝您的快速回復 - 我已經添加了HTML。好的,你能詳細說明一下嗎? – Crashtor

+0

你能展示你的擴展樹列表作爲工作演示嗎?您可以創建一個有問題的代碼片段來提供演示。或者只是你的樹列表中的代碼粘貼在你的問題。 [help](http://stackoverflow.com/help/mcve) – sabithpocker

回答

0

下面的代碼嘗試在文件準備

var getUniqueID = localStorage.getItem('uniqueid'); 
if(typeof getUniqueID == "string") 
{ 
    var parsedUID = JSON.parse(getUniqueID); 
    if(parsedUID != "" && typeof parsedUID == "object") 
    { 
    for(item in parsedUID) 
    { 
     if(parsedUID[item]) 
     $("#"+item+).collapse('show'); 
     else 
     $("#"+item+).collapse('hide'); 
    } 
    } 
} 

$('.expand').click(function() { 
    //store the id of the collapsible element 
    var uniqueid = {}; 
    $('.expand').each(function(){ 
     var getID = $(this).attr('href').replace(/#/g,''); 
     uniqueid[getID] = $(this).hasClass('collapsed'); 
    }); 
    localStorage.setItem('uniqueid', JSON.stringify(uniqueid)); 


}); 
+0

這不會去做。首先它會拋出一個語法錯誤,當我修復它時,它會說「無法識別的表達式:」#collapseExample「(...)」(它是元素的href)。從來沒有 - 它似乎根本不能保存物品。不應該設置頂部? – Crashtor

+0

你用'$(document).ready(function(){})包裝了它嗎?' – SPViradiya

+0

確實。我還在未定義的位置0(...)處得到未捕獲的SyntaxError:JSON中意外的令牌u。 – Crashtor

1

要生成一個唯一的ID使用Date.now()和附加的返回值來給定的字符串等:

var id = "id-" + Date.now(); // id-1477557085096

的Date.now()方法返回從1970年1月1日00:00:00 UTC開始經過的毫秒數。

+0

ooo。很好的建議。讓我試試看! – Crashtor

+0

這是怎麼回事? $(文件)。就緒(函數(){$ ()點擊(函數(){VAR = UNIQUEID 「ID-」 + Date.now() '擴大'; // ID-1477557085096 localStorage.setItem( 'UNIQUEID',JSON.stringify(UNIQUEID)); $(本).attr( 'href' 屬性); }); 變種collapseItem = localStorage.getItem( 'UNIQUEID');如果 (collapseItem){$ (collapseExample).collapse( '秀') $點擊(函數(){ \t localStorage.removeItem( 'UNIQUEID '); })(' 擴大')。 ; } }) – Crashtor

相關問題