Cookie для меню аккордион и для div
Вложений: 1
Хотел сделать Cookie для меню и для запоминая div который открыт. На одном форуме нашел пример с применением сookie к меню, но переделать под свое меню не выходит.
Меню в html <ul class="accordion"> <!--Блок всего меню--> <li id="one" class="files"> <!--Блок раздела--> <a href="#one">Мои файлы<span>10</span></a> <!--Ссылка блока раздела--> <ul class="sub-menu"> <!--Блок подменю раздела--> <li><a href="#"><em>01</em>Файл<span>1</span></a></li> <!--Ссылки подменю--> </ul> </li> <li id="two" class="mail"> <a href="#two">Мои картинки<span>20</span></a> <ul class="sub-menu"> <li><a href="#"><em>01</em>Альбом<span>2</span></a></li> </ul> </li> <li id="three" class="cloud"> <a href="#three">Сфера<span>30</span></a> <ul class="sub-menu"> <li><a href="#"><em>01</em>Файлы сферы<span>3</span></a></li> </ul> </li> <li id="four" class="sign"> <a href="#four">Вход</a> <ul class="sub-menu"> <li><a href="#"><em>01</em>Войти на сайт</a></li> </ul> </li> </ul> Скрипт для cookie <script type="text/javascript"> $(document).ready(function(){ if($.cookie("num_open_ul")) { // если в куках есть число if($.cookie("num_open_ul")!=0) { // и это число не равно нулю - значит какой-то список открыт var number_eq=$.cookie("num_open_ul")-1; // уменьшаем порядковый номер на 1 так как eq идёт с нуля $("ul.accordion ul").eq(number_eq).show(); // открываем соответствующий список } }; //Определяем по нажатию на какой элемент должны открыватся подменю $("ul.accordion li ").click(function(){ if(!$(this).next().is(':visible')) { // если кликнутый блок не раскрыт ( не виден список после него ) $('ul.accordion ul').slideUp(380);// сварачиваем все списки } $(this).next().slideToggle(280); // в любом случае переключаем (если открыт закрываем и наоборот) список после кликнутого блока setTimeout(fncookie, 100);//задержка записи кук }); //запись в куки номера открытого меню function fncookie(){ var number_open_ul=0; // если ноль - то ни один не открыт var i=0; // переменная- счётчик всех списков ul в меню $("ul.accordion ul").each(function(){ i++;// порядковый номер просматриваемого списка увеличиваем на 1 if($(this).is(':visible')){ // если блок виден то его порядковый номер заносим в специальную переменную number_open_ul=i; } $.cookie("num_open_ul",number_open_ul);// записываем в куки номер открытого списка }); }// end fncookie });/*end ready*/ Теперь про div, у меня на странице есть вложенные div, которые поочередно открываются и закрываются , но при обновлении страницы открытым остается только первый div, как с помощью cookie сделать чтобы запоминалось какой блок был открыт? Скрипт для div: <script type="text/javascript"> function displ(b) { for (var a = 1; a < 3; a++) document.getElementById("d" + a).style.display = "none"; document.getElementById("d" + b).style.display = "block" }; </script> Код html для div: <a href="javascript: displ('1')">1 </a> | <a href="javascript: displ('2')">2 </a> <div id="d1" style="display: block;"> <p > 1</p> </div> <div id="d2" style="display: none;" > <p>2</p> </div> Пример меню |
|
Часовой пояс GMT +3, время: 18:03. |