Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Раздвижное меню на КУКАХ

Дмитрий Козаренко Знаток (338), на голосовании 8 лет назад
Привет, помогите с Js скриптом меню..

крч. если 2 меню то не сохраняет раздвижение/скрытие а если одно то работает.
скрипт :
$(document).ready(function(){
if($.cookie('num_open_ul')){ // проверили, есть ли запись в печеньках
if($.cookie('num_open_ul') != 0){ // и эта запись не равна 0
var number_eq = parseInt($.cookie('num_open_ul')-1);
$('.navigation_body').eq(number_eq).show().prevAll('#navigation h20.navigation_head:first').addClass('active_navigation');
}
};
$('#navigation h20.navigation_head').click(function(){ // при клике сработает эта функция
if(!$(this).next().is(':visible')){
$('div.navigation_body').siblings('div.navigation_body').slideUp(500); // если другие открыты- закрыли все, кроме текущего
}
$(this).next('div.navigation_body').slideToggle(500).siblings('div.navigation_body').slideUp(500);
$(this).toggleClass('active_navigation').siblings('#navigation h20.navigation_head').removeClass('active_navigation'); // открытому добавили класс, чтобы сменить стиль
setTimeout(fncookie, 600); //сама запись в печеньки с задержкой, дабы скрипт до записи успел завершить работу (500мс- скорость, задержка- 600мс)
});
function fncookie(){ // сама функция записи
var number_open_ul = 0;
var i = 0;
$('div.navigation_body').each(function(){
i++;
if($(this).is(':visible')){
number_open_ul = i;
}
$.cookie('num_open_ul', number_open_ul, {expires:3, path:'/'}); // хранить 3 дня для всего сайта.
});
}
});
Дополнен 8 лет назад
мне нужно для 6 раздвижных меню на одной странице, а работает только одно
Голосование за лучший ответ
Dr. Dick Оракул (51879) 8 лет назад
куки фуфуфу. Весь мир уже давно юзает localStorage!
Дмитрий КозаренкоЗнаток (338) 8 лет назад
я обсуждать не простил!! какая разница? у каждого свои интересы!!!
Dr. Dick Оракул (51879) такая разница, что запись в куки выглядит гродоздко. Но не суть. Ты хочешь чтоб работало для 6 менюх, но при этом у тебя только одна кука: num_open_ul. Здравый смысл и примитивная логика подсказывают что состояние каждой менюхи надо хранить в отдельной куке, не так ли?
Metotron Искусственный Интеллект (114907) 8 лет назад
Сохраняй в куку не число, а json с шестью числами.
Куки используются когда нужно отдавать данные на сервер. На каждый запрос странциы с сервера уходит твоя кука. НА КАЖДЫЙ. Поэтому удобнее использовать localStorage. Тем более, что localStorage генерирует событие onstorage, которое позволяет всем открытым страницам сайта реагировать на изменения на одной странице. Например, добавляешь в корзину товар, все остальные страницы тут же отображают актуальное количество товаров в корзине.
Саня Семенов Оракул (60497) 8 лет назад
Так там же в куках хранится одна айдишка менюшки поэтому и работает только для одной
Дмитрий КозаренкоЗнаток (338) 8 лет назад
есть в скрипте строки:

$('div.navigation_body').siblings('div.navigation_body').slideUp(500); // если другие открыты- закрыли все, кроме текущего
}
$(this).next('div.navigation_body').slideToggle(500).siblings('div.navigation_body').slideUp(500);

---

может их можно сменить?
Похожие вопросы