@Tokenchik

Почему некоректно работает аккордеон на куках?

Проспал момент поломки аккордеона меню на jquery и cookie.
На аккордеон на главной странице живет своей жизнью, а на всех остальных нормально работает.
Jqury и jquery.cookie.js подключены.
Дополнительно:
заметил что на разных страницах сайта создаются свои куки со своими путями,
на главной куки с path = /,
на страницах page/{любой числовой параметр} path = /page
на странице категорий {любой числовой параметр} path = /category
Таким образом я так понимаю смотрится путь для страницы и только для нее и используется.
Хочется хоть немного помощи в данном вопросе )

<ul class="art-vmenu" id="menu">
	<li class="item-121 sub"><a href="#" >Билеты ж/д и авиа</a>
		<ul class="subul" id="subul">
			<li class="subli"><a href="/pages/9">Ж/д информация</a></li>
			<li class="subli"><a href="/pages/10">Авиа информация</a></li>
			<li class="subli"><a href="/pages/11">Автобусы рейсовые</a></li>
			<li class="subli"><a href="/pages/12">Доставка в Толмачево</a></li>
			<li class="subli"><a href="#" onclick='showCart()'>Оставить заявку</a></li>
		</ul>
	</li>
	<li class="item-121 sub"><a href="#" >Дальние страны</a>
		<ul class="subul" id="subul">
			<li class="subli"><a href="/pages/13">Общая информация</a></li>
			<li class="subli"><a href="/pages/14">Популярные страны</a></li>
			<li class="subli"><a href="/pages/15">Партнеры</a></li>
		</ul>
	</li>
	<li class="item-121 sub"><a href="#" >Детский отдых</a>
		<ul class="subul" id="subul">
			<li class="subli"><a href="/pages/16">Живые уроки</a></li>
			<li class="subli"><a href="/pages/17">Экскурсии по России</a></li>
			<li class="subli"><a href="/pages/18">ДОЛ</a></li>
			<li class="subli"><a href="#" onclick='showCart()'>Оставить заявку</a></li>
		</ul>
	</li>
	<li class="item-121 sub"><a href="#" >Курорты РФ и СНГ</a>
		<ul class="subul" id="subul">
			<li class="subli"><a href="/pages/19">Общая информация</a></li>
			<li class="subli"><a href="/pages/20">Горный Алтай</a></li>
			<li class="subli"><a href="/pages/21">Белокуриха</a></li>
			<li class="subli"><a href="/pages/22">Алеан</a></li>
			<li class="subli"><a href="#" onclick='showCart()'>Оставить заявку</a></li>
		</ul>
	</li>
	<li class="item-121 sub"><a href="#" >Визы</a>
		<ul class="subul" id="subul">
			<li class="subli"><a href="/pages/23">Общая информация</a></li>
			<li class="subli"><a href="#">Шенгенская виза</a></li>
			<li class="subli"><a href="/pages/24">- Требования</a></li>
			<li class="subli"><a href="/pages/25">- Стоимость</a></li>
			<li class="subli"><a href="#" onclick='showCart()'>- Заявка</a></li>
			<li class="subli"><a href="#">Китай</a></li>
			<li class="subli"><a href="/pages/26">- Требования</a></li>
			<li class="subli"><a href="/pages/27">- Стоимость</a></li>
			<li class="subli"><a href="#" onclick='showCart()'>- Заявка</a></li>
		</ul>
	</li>
</ul>


$(document).ready(function () {
    var checkCookie = $.cookie("sub-nav");
    if (checkCookie != "") {
        $('#menu > li.sub > a:eq('+checkCookie+')').addClass('active').next().show();
    }
    $('#menu > li.sub > a').click(function(){
        var navIndex = $('#menu > li.sub > a').index(this);
        $.cookie("sub-nav", navIndex);
        $('#menu li ul').slideUp(200);
        if ($(this).next().is(":visible")){
            $(this).next().slideUp();
        } else {
            $(this).next().slideToggle(200);
        }
        $('#menu li a').removeClass('active');
        $(this).addClass('active');
        return false;
    });
    var checkCookie = $.cookie("sub-link");
    if (checkCookie != "") {
        $('#menu > li.sub > ul li a:eq('+checkCookie+')').addClass('active');
    }
    $('.sub ul li a').click(function(){
        var subIndex = $('.sub ul li a').index(this);
        $.cookie("sub-link", subIndex);
        $('.sub ul li a').removeClass('active');
        $(this).addClass('active');
    });
});
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
@Tokenchik Автор вопроса
Проблема решается довольно просто - необходимо установить распространение кук на весь домен, иначе будет генериться на каждую страницу свои.
Вот мой рабочий пример, просто необходимо передать для cookie параметр path
$(document).ready(function () {
    var checkCookie = $.cookie("sub-nav");
    if (checkCookie != "") {
        $('#menu > li.sub > a:eq('+checkCookie+')').addClass('active').next().show();
    }
    $('#menu > li.sub > a').click(function(){
        var navIndex = $('#menu > li.sub > a').index(this);
        $.cookie("sub-nav", navIndex, { path: '/'});
        $('#menu li ul').slideUp(200);
        if ($(this).next().is(":visible")){
            $(this).next().slideUp();
        } else {
            $(this).next().slideToggle(200);
        }
        $('#menu li a').removeClass('active');
        $(this).addClass('active');
        return false;
    });
    var checkCookie = $.cookie("sub-link");
    if (checkCookie != "") {
        $('#menu > li.sub > ul li a:eq('+checkCookie+')').addClass('active');
    }
    $('.sub ul li a').click(function(){
        var subIndex = $('.sub ul li a').index(this);
        $.cookie("sub-link", subIndex, { path: '/'});
        $('.sub ul li a').removeClass('active');
        $(this).addClass('active');
    });
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы