19.06.2012, 13:27
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от devote
|
я ему подал идею, дальше думаю сам разберется.
|
Вряд ли - Дай намёк - Какой признак сохранять в кукисы ?
|
|
19.06.2012, 18:15
|
Аспирант
|
|
Регистрация: 24.05.2012
Сообщений: 93
|
|
Сообщение от Deff
|
devote, + Ток куки забыл , чел вряд ли подсунет
Воть есть коротенькие
==========
setcookie(Name,val,3600*24*1000); //Пример с Таймом на один день
Стереть
setcookie(Name,val,-1000);
|
Что то я не понял как кукисы приделать
|
|
19.06.2012, 18:23
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
zevilz,
Чуть позжа - есть идея чисто по клику считывать кол-во parents("UL").length от начала менюшки
И по загрузке все эти UL.show()
|
|
19.06.2012, 18:43
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от zevilz
|
Что то я не понял как кукисы приделать
|
<!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>
Последний раз редактировалось devote, 19.06.2012 в 22:08.
|
|
19.06.2012, 19:49
|
Аспирант
|
|
Регистрация: 24.05.2012
Сообщений: 93
|
|
Если честно, так нифига и не понял как эти кукисы приделать к скрипту... Сильно не пинайте, я только учусь. Каким то образом сохранилось одно положение в меню и после перезагрузки берется из куки.
|
|
19.06.2012, 19:54
|
Аспирант
|
|
Регистрация: 24.05.2012
Сообщений: 93
|
|
Вот это "setcookie(Name,val,3600*24*1000);" нужно сунуть вместо алерта? И если это, то что будет name, а что val?
|
|
19.06.2012, 20:00
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от zevilz
|
Если честно, так нифига и не понял как эти кукисы приделать к скрипту... Сильно не пинайте, я только учусь. Каким то образом сохранилось одно положение в меню и после перезагрузки берется из куки.
|
$(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;
}
});
});
Последний раз редактировалось devote, 19.06.2012 в 22:08.
|
|
19.06.2012, 20:02
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от zevilz
|
Вот это "setcookie(Name,val,3600*24*1000);" нужно сунуть вместо алерта? И если это, то что будет name, а что val?
|
нет, это лишь пример.. вы используйте ту функцию что юзали у себя.. в JavaScript нет функций setcookie/getcookie поэтому используйте для установки и получения то что вы юзали у себя.. У вас вроде как там плагин для джуквери юзался.
|
|
19.06.2012, 20:45
|
Аспирант
|
|
Регистрация: 24.05.2012
Сообщений: 93
|
|
Вроде работает, но с Вашими функциями. Щас еще пошаманю
|
|
19.06.2012, 21:01
|
Аспирант
|
|
Регистрация: 24.05.2012
Сообщений: 93
|
|
Работает все отлично
Убрал
<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 выкину. Он все равно только лежал ради навигации. Всем большое спасибо за помощь!
|
|
|
|