0

Я построил расширяющийся древовидный список, используя bootstrap collapse.. (Без аккордеона,, который, кажется, редок, который я узнал при попытке Google). Первая проблема, с которой я столкнулся, заключалась в том, что открытая/закрытая позиция каждого элемента на странице reload не была записана и поэтому должна быть сохранена используя локальное хранилище. Легко.Как изменить Bootstrap Свернуть с уникальным идентификатором для открытого и закрытого состояния на странице перезагрузки

Следующая проблема заключается в том, что каждый элемент дерева действует индивидуально и не запоминает позицию друг друга. Таким образом, нам нужно создать уникальный идентификатор для открытого и закрытого состояний для каждого человека, чтобы они не открывались и не закрывались вместе.

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 и прокручивать их при загрузке. – SPViradiya

+0

Благодарим за быстрый ответ - я добавил HTML. Хорошо, не могли бы вы уточнить? – Crashtor

+0

Можете ли вы показать свой расширяющийся список деревьев в качестве рабочей демонстрации? Вы можете создать соответствующий фрагмент кода для предоставления демонстрации. Или просто код вашего дерева, вставленный в ваш вопрос. [help] (http://stackoverflow.com/help/mcve) – sabithpocker

ответ

0

Try ниже код на документе готовый

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

да, действительно. Я также получаю Uncaught SyntaxError: Неожиданный токен u в JSON в позиции 0 (...), который не определен. – Crashtor

1

Чтобы создать уникальный идентификатор использовать Date.now() и добавить возвращаемое значение данной строки, как:

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

Метод Date.now() возвращает число миллисекунд, прошедшее с 1 января 1970 года 00:00:00 по UTC.

+0

ooo. хорошее предложение. Позвольте мне попробовать! – Crashtor

+0

Что в этом плохого? $ (документ) .ready (функция() {$ ( ) нажмите (функция() { вар UniqueID = "id-" + Date.now() 'расшириться.';. // идентификатор-1477557085096 localStorage.setItem ('UniqueID', JSON.stringify (UniqueID)); $ (это) .attr ('HREF'); }); вар collapseItem = localStorage.getItem ('UniqueID'); , если (collapseItem) { $ (collapseExample) .collapse ('шоу') $ нажмите (функция() { \t localStorage.removeItem ('UniqueID '); }) (' расширение'.). ; } }) – Crashtor