Цитата:
|
Цитата:
|
zevilz,
Чуть позжа - есть идея чисто по клику считывать кол-во parents("UL").length от начала менюшки И по загрузке все эти UL.show() |
Цитата:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<style>
#nav_menu_content ul {
display: none;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
var nav = $("#nav_menu_content"),
uls = nav.find("ul");
// тут получаем индексы из куки и перебираем их:
var showedElems = [0,1]; // индексы из куки
for( var i = 0; i < showedElems.length; i++ ) {
// отображаем при загрузке то что надо.
$( uls[ showedElems[ i ] ] ).show();
}
nav.find("a").click(function() {
var self = $(this).next();
if ( self.length > 0 ) {
var showedElems = [];
uls.each(function( index ){
if ( this === self[0] ) {
if ( self.css('display') == "none" ) {
showedElems[ showedElems.length ] = index;
}
$( this ).slideToggle( 200 );
} else if ( jQuery.inArray( this, self.parents( "ul" ) ) == -1 ) {
$( this ).slideUp( 200 );
} else {
showedElems[ showedElems.length ] = index;
}
});
alert( "вот тут все эти индексы можно сунуть в куку: " + showedElems );
return false;
}
});
});
</script>
</head>
<body>
<ul class='left_nav_menu' id='nav_menu_content'>
<li><a href='#0'>Категория_1</a>
<ul>
<li><a href="#">Подкатегория_1</a>
<ul>
<li><a href="view_cat.php?...">Подподкатегория_1</a></li>
</ul>
</li>
<li><a href="#">Подкатегория_2</a>
<ul>
<li><a href="view_cat.php?...">Подподкатегория_2</a></li>
<li><a href="view_cat.php?...">Подподкатегория_3</a></li>
</ul>
</li>
<li><a href="#">Подкатегория_3</a>
<ul>
<li><a href="view_cat.php?...">Подподкатегория_4</a></li>
<li><a href="view_cat.php?...">Подподкатегория_5</a></li>
</ul>
</li>
</ul>
</li>
<li><a href='#0'>Категория_2</a>
<ul>
<li><a href="#">Подкатегория_4</a>
<ul class="material_cat">
<li><a href="view_cat.php?...">Подподкатегория_6</a></li>
</ul>
</li>
</ul>
</li>
</ul>
|
Если честно, так нифига и не понял как эти кукисы приделать к скрипту...:blink: Сильно не пинайте, я только учусь.:-? Каким то образом сохранилось одно положение в меню и после перезагрузки берется из куки.
|
Вот это "setcookie(Name,val,3600*24*1000);" нужно сунуть вместо алерта? И если это, то что будет name, а что val?
|
Цитата:
$(function(){
var nav = $("#nav_menu_content"),
uls = nav.find("ul");
// тут получаем индексы из куки и перебираем их:
var showedElems = ( getcookie( "MENU" ) || "" ).split(",");
for( var i = 0; i < showedElems.length; i++ ) {
// отображаем при загрузке то что надо.
$( uls[ showedElems[ i ] ] ).show();
}
nav.find("a").click(function() {
var self = $(this).next();
if ( self.length > 0 ) {
var showedElems = [];
uls.each(function( index ){
if ( this === self[0] ) {
if ( self.css('display') == "none" ) {
showedElems[ showedElems.length ] = index;
}
$( this ).slideToggle( 200 );
} else if ( jQuery.inArray( this, self.parents( "ul" ) ) == -1 ) {
$( this ).slideUp( 200 );
} else {
showedElems[ showedElems.length ] = index;
}
});
// вот эту переменную со строкой засуньте в куки,
// примерно так:
setcookie( "MENU", showedElems.join(",") ,3600*24*1000 );
return false;
}
});
});
|
Цитата:
|
Вроде работает, но с Вашими функциями. Щас еще пошаманю
|
Работает все отлично:)
Убрал
<style>
#nav_menu_content ul {
display: none;}
</style>
И добавил в начало скрипта:
$(document).ready(function() {
$("ul#nav_menu_content ul").addClass("display_none");
});
(Класс display_none у меня прописан в css) А то при отключении сценариев js в браузере навигация можно сказать вообще бесполезна. Я думаю лучше оставлю ваш код, а плагин jquery cookie выкину. Он все равно только лежал ради навигации. Всем большое спасибо за помощь!:) |
| Часовой пояс GMT +3, время: 06:56. |