Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Октрытый раздел меню JS

Сообщения:  [1-10]   [11-16] 

 
 автор: Гость   (05.07.2011 в 12:18)   письмо автору
 
   для: tima2010   (05.07.2011 в 12:12)
 

Я не посмотрел что у вас еще один класс есть, при котором он открытым остатся должен. Вот такой финальный вариант:


    $(document).ready(function() {
        $('#menu-sidebar li:not(.current-menu-item, .current-menu-ancestor) ul').hide();   

        $('#menu-sidebar li a').click(function() {
            $(this).next().slideToggle();
            return false;
        });   
    });  


PS: пока писал вы меня опередили)
PSS: вероятно нужно будет добавить return false; т.к. иначе будет переходить по ссылке

  Ответить  
 
 автор: tima2010   (05.07.2011 в 12:12)   письмо автору
 
   для: Гость   (05.07.2011 в 12:08)
 

Большое спасибо работает на пустом файле, буду проверять что мешает
Всегда знаю что можно найти помощь специалистов на Softtime! :)

итоговый код
    $(document).ready(function() { 
        $('#menu-sidebar li').not('.current-menu-item, .current-menu-ancestor').find('ul').hide();    

        $('#menu-sidebar li a').click(function() { 
            $(this).next().slideToggle(); 
        });    
    });   


p.s. меню делалось для wordpress

  Ответить  
 
 автор: Гость   (05.07.2011 в 12:08)   письмо автору
 
   для: tima2010   (05.07.2011 в 12:04)
 

Если вы вставляете мой вариант на отдельной странице, без всяких дополнительных скриптов (кроме jQuery конечно) - он не работает?

Открывается и сразу закрывается потому что у вас где-то еще один обработчик "меню" запущен.

  Ответить  
 
 автор: tima2010   (05.07.2011 в 12:04)   письмо автору
 
   для: Гость   (05.07.2011 в 11:55)
 

Ваш вариант тоже не работает :(
меню не остается открытым
и при нажатии на UL теперь оно открывается и сразу закрывается

  Ответить  
 
 автор: Гость   (05.07.2011 в 11:55)   письмо автору
 
   для: tima2010   (05.07.2011 в 11:24)
 

<ul id="menu-sidebar">  
    <li class="current-menu-item">  
    <a href="#">1</a>   
    <ul>   
        <li><a href="#">2</a></li>   
        <li><a href="#">3</a></li>   
        <li><a href="#">4</a></li>   
    </ul>   
    </li> 
    <li>  
    <a href="#">2</a>   
    <ul>   
        <li><a href="#">22</a></li>   
        <li><a href="#">32</a></li>   
        <li><a href="#">42</a></li>   
    </ul>   
    </li> 
</ul>

<script type="text/javascript">    
    $(document).ready(function() {
        $('#menu-sidebar li').not('.current-menu-item').find('ul').hide();   

        $('#menu-sidebar li a').click(function() {
            $(this).next().slideToggle();
        });   
    });  
</script>

  Ответить  
 
 автор: tima2010   (05.07.2011 в 11:40)   письмо автору
 
   для: AlexSol   (05.07.2011 в 11:32)
 

теперь все меню просто раскрылось :(

  Ответить  
 
 автор: AlexSol   (05.07.2011 в 11:32)   письмо автору
 
   для: tima2010   (05.07.2011 в 11:24)
 


function initMenu() {  
  $('#menu-sidebar ul').hide();  
  //$('#menu-sidebar ul:first').hide();  лишнее
    
  $('#menu-sidebar li a').click(  
    function() {  
      var checkElement = $(this).next();
      var li =   $(this).parent()
      if((checkElement.is('ul')) && (checkElement.is(':visible'))) {  
        return false;  
        }  
      if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {  
           if(li.hasClass('current-menu-item')||li.hasClass('current-menu-ancestor'))
           
           }else{
             $('#menu-sidebar ul:visible').slideUp('normal');  
           }
              checkElement.slideDown('normal');  
        return false;  
        }  
      }  
    );  
  }  
$(document).ready(function() {initMenu();});  

  Ответить  
 
 автор: tima2010   (05.07.2011 в 11:24)   письмо автору
 
   для: AlexSol   (02.07.2011 в 07:57)
 

так и не вышло, не получается написать условие вида:

Если у LI есть калссы current-menu-item или current-menu-ancestor то оставляем открытым, иначе закрываем...


<ul id="menu-sidebar"> 
<li class="current-menu-item current-menu-ancestor"> 
<a href=""></a>  
<ul>  
<li><a href=""></a></li>  
<li><a href=""></a></li>  
<li><a href=""></a></li>  
</ul>  
</li> 


по коду обработчика пока что есть только такой:

function initMenu() { 
  $('#menu-sidebar ul').hide(); 
  $('#menu-sidebar ul:first').hide(); 
   
  $('#menu-sidebar li a').click( 
    function() { 
      var checkElement = $(this).next(); 
      if((checkElement.is('ul')) && (checkElement.is(':visible'))) { 
        return false; 
        } 
      if((checkElement.is('ul')) && (!checkElement.is(':visible'))) { 
        $('#menu-sidebar ul:visible').slideUp('normal'); 
        checkElement.slideDown('normal'); 
        return false; 
        } 
      } 
    ); 
  } 
$(document).ready(function() {initMenu();}); 




может кто знает как реализовать? :(

  Ответить  
 
 автор: AlexSol   (02.07.2011 в 07:57)   письмо автору
 
   для: tima2010   (01.07.2011 в 21:41)
 

рабочий код смотрите
автор: AlexSol (01.07.2011 в 11:46)

относительно вашего скрипта - у вас нет даже намека на такую проверку и в каком именно месте она вам нужна я угадать не могу

  Ответить  
 
 автор: tima2010   (01.07.2011 в 21:41)   письмо автору
 
   для: AlexSol   (01.07.2011 в 13:37)
 

прошу прощения за наглость, не могу разобраться, не могли бы вы привести полный код?

  Ответить  

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования