За последние 24 часа нас посетили 16078 программистов и 1543 робота. Сейчас ищут 864 программиста ...

ul.menu accordion - раскрыть при загрузке страницы

Тема в разделе "JavaScript и AJAX", создана пользователем Follower, 11 янв 2011.

  1. Follower

    Follower Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте!
    Мне хотелось бы, чтобы при загрузке страницы родитель активного элемента был раскрыт. По умолчанию закрываются все сразу. Выше кода, отвечающего за аккордеон, находится код анимации пунктов меню, который как раз таки не срабатывает на родителе активного элемента. Пробовал параметр оттуда вставлять в строчку закрывания, меню корежит только. Пробовал в (...).show() вставлять и active, и active.parent, и current - ничего не происходит. Вот собсно код
    PHP:
    1. <?php if ($sidebar_nav_animation == "yes") { ?>
    2.     // ------ Sidebar animation --------- //
    3. $jQuery('.jjmod-content ul.menu li:not(.active) a,.jjmod-content ul.menu li:not(.active)>span').hover(function() { //mouse in  тут вот не пойми что.  
    4.     $jQuery(this)
    5.         .animate({backgroundColor: "<?php echo $theme_color_code[$theme_color] ?>"}, "fast")
    6.         .animate({ backgroundColor: "#253034" }, "slow"); //классно выглядит, плавненько так в серый переходит, только подтормаживает, если мышкой быстро дергать
    7.     }, function() { //mouse out
    8.     $jQuery(this).animate({ backgroundColor: "#1B262A" }, "normal");  
    9. });  
    10.  
    11. <?php } if ( $use_accordian == "yes" ) { ?>
    12.     // ------ Accordion menu  --------- //
    13. $jQuery(".jjmod-content ul.menu li ul").hide();
    14. //Сюда типа надо show, или условие в hide выше
    15. $jQuery(".jjmod-content ul.menu li span").<?php echo $accordian_trigger; ?>(function(){ //отсюда, насколько я понял, идет обработка клика, но ее мне не надо трогать
    16.     $jQuery(this).next(".jjmod-content ul").slideToggle("slow").siblings("li:visible").slideUp("slow");
    17.     $jQuery(this).toggleClass("active");
    18.     $jQuery(this).siblings("li").removeClass("active");
    19. },
     
  2. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    У меня ощущение что про DOM ready забыли.

    А потому что .stop() надо делать.
     
  3. Follower

    Follower Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    5
    Симпатии:
    0
    Да, DOM ready. Я-то думаю, для чего же он был нужен? Он у меня не инициализировался и рушил всю яву на странице, я его и закомментировал. А здесь-то его куда впихнуть?
    Вот строчка была,
    PHP:
    1. //$tooltipInit = '      window.addEvent(\'domready\', function(){ var JTooltips = new Tips($$(\''.$selector.'\'), '.$options.'); });';
    2.  
    в ошибках писало что нет такой функции. Типа если это поправить, то и меню заработает?[/php]
     
  4. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Я тут явы не вижу.
     
  5. Follower

    Follower Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    5
    Симпатии:
    0
    А она и не тут. Это же фрагмент большого php-файла. Только у залогинившихся пользователей выскакивает
    Uncaught exception: TypeError: 'window.addEvent' is not a function

    Error thrown at line 2, column 2 in http://example.com/:
    window.addEvent('domready', function(){ var JTooltips = new Tips($$('.hasTip'), { maxTitleChars: 50, fixed: false}); });

    Тем более включенность дома на меню не влияет вроде.

    UPD: Или Вы таки придираетесь к несчастным юзерам и жестоко дифференцируете яву и яваскрипт? Извиняюсь, что лень писать полностью, здесь и далее подразумевается Javascript
     
  6. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    на сколько я понял тебе надо тупо прописать в нужное место

    а именно в цсс

    [css].dropdown{
    display:none;
    }
    .dropdown li{
    border:0px;
    }
    .droppokazano{
    display:block;
    }
    .droppokazano li{
    border:0px;
    }[/css]

    а в хтмл задать стили

    HTML:
    1. <li class="menu">
    2.     <ul>
    3.         <li class="button"><a href="#" class="verh">Скрытое меню<span></span></a></li>
    4.         <li class="dropdown">
    5.             <ul>
    6.                 <li><a href="#">Меня не видно</a></li>
    7.                 <li><a href="#">Меня не видно</a></li>
    8.                 <li><a href="#">Меня не видно</a></li>
    9.                 <li><a href="#">Меня не видно</a></li>
    10.             </ul>
    11.         </li>
    12.     </ul>
    13. </li>
    14. <li class="padaetmenu">
    15.     <ul>
    16.         <li class="button"><a href="#" class="verh">Не скрытое меню<span></span></a></li>
    17.         <li class="droppokazano">
    18.             <ul>
    19.                 <li><a href="#">Меня видно</a></li>
    20.                 <li><a href="#">Меня видно</a></li>
    21.                 <li><a href="#">Меня видно</a></li>
    22.                 <li><a href="#">Меня видно</a></li>
    23.             </ul>
    24.         </li>
    25.     </ul>
    26. </li>
    рабочий вариант есть тут http://booksis.ru/
     
  7. Follower

    Follower Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    5
    Симпатии:
    0
    Со стилями у меня как раз все в порядке, и отображается все правильно. Не мной сделанный яваскрипт при загрузке не мной сделанной страницы .php работает с меню. Из php в яваскрипт передаются указатели (или как это в php называется) на те пункты меню, с которыми скрипт должен работать. Мне нужен такой "указатель", который я бы передал в скриптовый метод .show(), чтобы вкладка, в которой есть активный пункт, раскрывалась при вызове этого скрипта при загрузке страницы. В исходном варианте все вкладки сворачиваются методом .hide(). Или же можно прикрутить в hide() условие, обходящее активную вкладку, но у меня лично ни того, ни другого с наскоку не получилось. Похожее меню можно посмотреть тут: http://www.joomlajunkie.com/demo/ шаблон dark rational, меню accordion слева, жмакните joomla и contact. Подсветка у пункта joomla исчезнет, но раскрыто оно как раз не будет. А мне надо, чтоб если contact выделено черным, то вся вкладка joomla при загрузке раскрывалась.
     
  8. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
  9. Follower

    Follower Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    5
    Симпатии:
    0
    Эм, в моем случае, походу, немного измененная версия. К примеру, в первоисточнике нельзя открыть две вкладки разом, а у меня можно. За базу взято jQuery, да. Но там про обращение к активной вкладке я ничего не нашел.