| 
	| 
	
	| 
		
	| 
			
			 
			
				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 выкину. Он все равно только лежал ради навигации. Всем большое спасибо за помощь!  |  |  |  |