2012-01-23 2 views
0

A noob вопрос. Ответ, вероятно, очень прост, но почему-то я не могу понять, и мне нужно двигаться дальше в моем проекте.Сделать вертикальное jquery слайд вниз меню оставаться открытым

У меня есть вертикальное навигационное меню, и у меня есть слайд вниз при наведении. Но я хотел бы, чтобы меню оставалось открытым, как только оно соскользнуло. Я пробовал удалить последнюю строку кода, но это не выглядит красиво.

Я попытался реализовать Stu Nicholls method, но не получил его на работу. Но это тот эффект, который я хотел бы иметь.

Мое меню HTML является:

<nav id="verticalmenu">   
<ul> 
    <li><a class="slide" href="#">Kalendarium</a> 
    <ul class="down"> 
    <li><a href="#">Konzerte</a></li> 
    <li><a href="#">Seminare</a></li> 
    <li><a href="#">Vortraege</a></li> 
    </ul> 
</li> 
<li><a href="#">Projekte</a> 
    </ul> 

И JQuery к нему:

<script type="text/javascript"> 



(function($){ 

      //cache nav 
      var nav = $("#verticalmenu"); 

      //add hovers to submenu parents 
      nav.find("li").each(function() { 
       if ($(this).find("ul").length > 0) { 


        //show subnav on hover 
        $(this).mouseenter(function() { 
         $(this).find("ul").stop(true, true).slideDown(); 
        }); 

        //hide submenus on exit 
        $(this).mouseleave(function() { 
         $(this).find("ul").stop(true, true).slideUp(); 
        }); 
       } 
      }); 
     })(jQuery); 

Спасибо большое!

+0

изменить ваш MouseLeave на щелчок, он должен обеспечение код работает, открыто при наведении, остается открытой, когда вы покидаете и рухнуть, когда вы нажимаете это, они типа функциональности вашего после? –

+0

Удалите код скрытия после комментария '// hide submenus on exit'. – Samich

+0

Спасибо вам обоим, но у этого есть тот же результат - все хорошо, пока я не вытащу мышь. то он получает все скремблированные. в любом случае, я буду прислушиваться к сети далее ... спасибо! – furby

ответ

2

просто скрыть их при загрузке документа. нет необходимости, если проверка, JQuery делает это внутренне

(function($){ 
    var nav = $("#verticalmenu"); 
     //add hovers to submenu parents 
     nav.find("li").each(function() { 
      var li_ul = $(this).find("ul"); 
       li_ul.hide(); 
       //show subnav on hover 
       $(this).mouseenter(function() { 
        li_ul.stop(true, true).slideDown(); 
       }); 
     }); 
})(jQuery); 

скрипка: http://jsfiddle.net/Redwb/3/

+0

OMG! СПАСИБО !!!! Ты СПАСИБО ЖИЗНИ! Просто позвонил клиенту, и он НЕ был доволен, - вы ДЕЙСТВИТЕЛЬНО сделали мой день. – furby

+1

Я рад, что могу помочь вам ... не забудьте отметить ответ, как принято. –

+0

http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work и http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work может помочь вам. –

Смежные вопросы