Выпадающее меню

Тема в разделе "JavaScript", создана пользователем Sudba, 21 авг 2015.

Модераторы: ZiX
  1. Sudba

    Sudba

    Регистр.:
    6 дек 2007
    Сообщения:
    857
    Симпатии:
    45
    Здравствуйте, подскажите пожалуйста, у меня есть Категория и подкатегории.
    Нужно, чтобы когда счелкали на категорию, появлялись подкатегории внизу.
    А если перейти на подкатегорию, то список не исчезал, а активная подкатегория выделялась
    Вот есть сайт:

    Счелкаете на торты и появляются подкатегории - ОК.
    Но если перейти на Ягодный торт, то список слева исчезает - а хотелось бы чтобы он был открыт
     
  2. ultra

    ultra дизигнитор дизигнирующий дизигны

    Moderator
    Регистр.:
    15 ноя 2011
    Сообщения:
    201
    Симпатии:
    276
    Код:
    <script language="JavaScript" type="text/javascript">
                                                     
        var el = jQuery('#buysimply-vertical-tree a.selected');
        jQuery(el).closest('li').children('ul').show();
                                                     
        do {                                        
            el = jQuery(el).parent().parent();      
            if (!el.length) break;                  
            if (el[0].tagName != 'UL') break;        
            jQuery(el).show();                      
        } while (true);                              
                                                     
    </script>
    
    если не работает - обработать напильником
    тред перенес в ветку js
     
    Последнее редактирование: 21 авг 2015
  3. Sudba

    Sudba

    Регистр.:
    6 дек 2007
    Сообщения:
    857
    Симпатии:
    45
    Не работает(((
    При этом если в подкатегории нажать на Торты, то видно что она выделена.
    У меня само меню организованы с помощью такого скрипта, если его убрать, то аккардеон пропадает
     
  4. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    364
    Симпатии:
    182
    Так вам нужно сохранять состояние меню - открытое/закрытое?
    Попробуйте такой код в конец добавить:
    Код:
    $(document).ready(function(){
    var parentLink = $('a[data-icon-id]:not(".stage-2 a")'), _ = $.cookie('accordion_index') + '';
    if (_ == 'undefined' || _ == 'null') {
    $.cookie('accordion_index', '', { path: '/' });
    } else if (_.length > 1) {
    var count = parentLink.length - 1;
    while (count >= 0) {
    if (_.indexOf(count+'_') >= 0){
        parentLink.eq(count).next('.stage-2').show();
    }
      count--;
    }
    }
    parentLink.click(function(){
    var f = $(this).data('icon-id') - 1 + '_';
    var fC = $.cookie('accordion_index');
    if(fC.indexOf(f) < 0) {
    f += fC;
    $.cookie('accordion_index', f, { path: '/' });
    } else {
    f = fC.replace(f, '');
    $.cookie('accordion_index', f, { path: '/' });
    }
    });
    });
     
  5. Sudba

    Sudba

    Регистр.:
    6 дек 2007
    Сообщения:
    857
    Симпатии:
    45
    в этом случае работает, но попробуйте счеелкнуть сейчас по тортам, а потом пирожные и выберите пирожные.Подкатегории остались открыты у Торта.

    А должно быть так:
    Выбрали Главную категорию - счелкнули - вышел список- челкнули по подкатегории - перешли и она выделилась как активная. При этом список именно данной главной категории открыт.
     
  6. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    364
    Симпатии:
    182
    ок. Выпилите тот код. А это в конец:
    Код:
    $(document).ready(function(){
    var pageHref = window.location.pathname.split('/')[2];
    $('a[href^="/category/'+pageHref+'"]').next('.stage-2').show();
    });
     
  7. Sudba

    Sudba

    Регистр.:
    6 дек 2007
    Сообщения:
    857
    Симпатии:
    45
    Не понял, куда этот код вставить?
     
  8. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    364
    Симпатии:
    182
    в идеале в конец документа перед </body></html>. Но можете попробовать и на место старого кода. Просто у вас другой скрипт обрабатывает скрытие всех подменю (.stage-2), что конечно не совсем правильно. JS, как известно, выполняется сверху вниз.
     
    Последнее редактирование: 21 авг 2015
  9. Sudba

    Sudba

    Регистр.:
    6 дек 2007
    Сообщения:
    857
    Симпатии:
    45
    Поставил перед </body>
    А наверху перед </head>
    Ничего не изменилось
     
  10. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    364
    Симпатии:
    182
    Это удалите:
    Код:
    <script language="JavaScript" type="text/javascript">
    
    
    $(document).ready(function(){
    
    var parentLink = $('a[data-icon-id]:not(".stage-2 a")'), _ = $.cookie('accordion_index') + '';
    if (_ == 'undefined' || _ == 'null') {
    $.cookie('accordion_index', '', { path: '/' });
    } else if (_.length > 1) {
    var count = parentLink.length - 1;
    while (count >= 0) {
    if (_.indexOf(count+'_') >= 0){
    parentLink.eq(count).next('.stage-2').show();
    }
    count--;
    }
    }
    parentLink.click(function(){
    var f = $(this).data('icon-id') - 1 + '_';
    var fC = $.cookie('accordion_index');
    if(fC.indexOf(f) < 0) {
    f += fC;
    $.cookie('accordion_index', f, { path: '/' });
    } else {
    f = fC.replace(f, '');
    $.cookie('accordion_index', f, { path: '/' });
    }
    $(document).ready(function(){
    var pageHref = window.location.pathname.split('/')[2];
    $('a[href^="/category/'+pageHref+'"]').next('.stage-2').show();
    });
    });
    });
    
    </script>
    language="JavaScript" - нет смысла указывать. Можно <script></script>. Этого достаточно для современных браузеров.
     
    Последнее редактирование: 21 авг 2015
    Sudba нравится это.