Хотел сделать 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>
Пример меню