Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.06.2012, 13:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от devote
я ему подал идею, дальше думаю сам разберется.
Вряд ли - Дай намёк - Какой признак сохранять в кукисы ?
Ответить с цитированием
  #12 (permalink)  
Старый 19.06.2012, 18:15
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 24.05.2012
Сообщений: 93

Сообщение от Deff Посмотреть сообщение
devote, + Ток куки забыл , чел вряд ли подсунет

Воть есть коротенькие

==========
setcookie(Name,val,3600*24*1000); //Пример с Таймом на один день
Стереть
setcookie(Name,val,-1000);
Что то я не понял как кукисы приделать
Ответить с цитированием
  #13 (permalink)  
Старый 19.06.2012, 18:23
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

zevilz,
Чуть позжа - есть идея чисто по клику считывать кол-во parents("UL").length от начала менюшки

И по загрузке все эти UL.show()
Ответить с цитированием
  #14 (permalink)  
Старый 19.06.2012, 18:43
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 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>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 19.06.2012 в 22:08.
Ответить с цитированием
  #15 (permalink)  
Старый 19.06.2012, 19:49
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 24.05.2012
Сообщений: 93

Если честно, так нифига и не понял как эти кукисы приделать к скрипту... Сильно не пинайте, я только учусь. Каким то образом сохранилось одно положение в меню и после перезагрузки берется из куки.
Ответить с цитированием
  #16 (permalink)  
Старый 19.06.2012, 19:54
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 24.05.2012
Сообщений: 93

Вот это "setcookie(Name,val,3600*24*1000);" нужно сунуть вместо алерта? И если это, то что будет name, а что val?
Ответить с цитированием
  #17 (permalink)  
Старый 19.06.2012, 20:00
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 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;
            }

        });

    });
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 19.06.2012 в 22:08.
Ответить с цитированием
  #18 (permalink)  
Старый 19.06.2012, 20:02
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от zevilz
Вот это "setcookie(Name,val,3600*24*1000);" нужно сунуть вместо алерта? И если это, то что будет name, а что val?
нет, это лишь пример.. вы используйте ту функцию что юзали у себя.. в JavaScript нет функций setcookie/getcookie поэтому используйте для установки и получения то что вы юзали у себя.. У вас вроде как там плагин для джуквери юзался.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #19 (permalink)  
Старый 19.06.2012, 20:45
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 24.05.2012
Сообщений: 93

Вроде работает, но с Вашими функциями. Щас еще пошаманю
Ответить с цитированием
  #20 (permalink)  
Старый 19.06.2012, 21:01
Аспирант
Отправить личное сообщение для zevilz Посмотреть профиль Найти все сообщения от zevilz
 
Регистрация: 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 выкину. Он все равно только лежал ради навигации. Всем большое спасибо за помощь!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с добавлением элементов в DIV (appendChild) Metallic Events/DOM/Window 6 01.02.2014 21:44
Проблема с отрисовкой элементов Alt jQuery 0 30.01.2012 18:36
Как выводить часть элементов страницы через javascript Victim Events/DOM/Window 9 28.12.2011 22:51
Проблема с получением атрибутов элементов из набора Nightwalker_nsk jQuery 2 17.05.2011 08:32
Проблема с Dialog. Блокировка элементов формы Vitus jQuery 1 28.02.2011 10:17