Моя задача состоит в том, чтобы меню запоминало текущее состояние, когда открыт целый "аккордеон" и при переходе по ссылке на определенный сегмент товара, запоминало состояние "аккордеона".
HTML не полный, так как сейчас стоит цель прийти к реализации запоминания при открытии хотя бы 1-lvl
меню.
Индекс куки принимает и вроде бы как отдаёт, но запоминание состояния не происходит.
Где я туплю ?
Js code :
$(document).ready(function () {
var checkCookie = $.cookie('nav-item');
if (checkCookie != null) {
$('#nav > ul:eq('+checkCookie+')').show();
}
$('#nav > li > a').click(function(){
var navIndex = $('#nav > li > a').index(this);
$.cookie('nav-item', 'navIndex');
});
$('#nav > li > span').click(function(){
var navIndex = $('#nav > li > span').index(this);
$.cookie('nav-item', navIndex);
});
$('#nav > li > span').click(function() {
$("#nav ul").toggleClass('active');
});
});
HTML code:
<div class="menu-categories-container">
<ul id="nav">
<li class="menu-item-has-children-1"><span class="open-lvl-1"></span><a href="#">Изделия из дерева
</a>
<ul class="menu-lvl-1">
<li><a href="">Декор</a></li>
<li><a href="">Геральдика</a></li>
<li><a href="">Двери</a></li>
<li><span class="open-lvl-1"></span><a href="">Декоративное панно</a></li>
<li><a href="">Рамы и зеркала</a></li>
<li class="menu-item-has-children-lvl-2">
<span class="open-lvl-1"></span>
<a href="">Резные лестницы из<br> дерева</a>
<ul class="menu-lvl-2">
<li><a href="">Балясины резные</a></li>
<li><a href="">Заходные столбы</a></li>
</ul>
</li>
<li><span class="open-lvl-1"></span><a href="">Религия</a></li>
<li><a href="">Токарная обработка</a></li>
<li><a href="">Часы</a></li>
</ul>
</li>
<li class="menu-item-has-children-2"><span class="open-lvl-1"></span><a href="#">Художественное литьё</a>
</li>
</ul>
</div>
Используйте localStorage:
Сохранить значение:
localStorage.menuIndex = $(this).closest('li').index();
Загрузить значение:
let index = localStorage.menuIndex || 0;
Fiddle
А ваша ошибка в том, что вы пытаетесь получить индекс элемента(a
, span
), который лежит в контейнере в одиночестве.
Нужно запрашивать index()
именно у li
:
$(this).closest('li').index();
// или
$('#nav > li > span').parent().index();
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть форма, в которую нужно вводить номер банковской карты
Помогите, пожалуйста, изменить цвет SVG и сделать так, что бы на hover цвет менялсяCss изменить не получается, или это только прописать на JS возможно?...
Есть база данных в postgresql и 10 таблиц, теперь необходимо добавить еще пару таблиц, в файле migrationjs
Записали в zum значение которое выбрал пользователь, как обнулить значение input после нажатия?