Menu verticale in jQuery

Creato il 13 novembre 2012 da Ketek @CarloVentrella

In questo articolo vi spiego come realizzare un menu verticale in jQuery che ci permette di avere un effetto di comparsa a tendina dei sottomenu. Lo script realizzato presenta una duplice versione di questo: il primo è un semplice menu, al secondo ho aggiunto invece l’effetto fisarmonica:

DEMO - Menu verticale in jQuery

La struttura HTML è molto semplice ed è basato su liste nidificate.

HTML

 
<div class="menu_box">
            <div class="menu_header"><label>Semplice</label></div>
            <div class="menu">
                 <ul class="title_ul">
                      <li class="title">
                            <ul>
                               <li class="submenu_title"><a href="#">Sub menu one</a></li>
                               <li class="sub">
                                      <ul>
                                           <li><a href="#">Item one</a></li>
                                           <li><a href="#">Item two</a></li>
                                           <li><a href="#">Item three</a></li>
                                      </ul>
                                </li>
                             </ul>
                           </li>
                           <li class="title">
                              <ul>
                                    <li class="submenu_title"><a href="#">Sub menu two</a></li>
                                          <li class="sub">
                               <ul>
                                     <li><a href="#">Item one</a></li>
                                     <li><a href="#">Item two</a></li>
                                </ul>
                            </li>
                          </ul>
                        </li>
                                   . . . .
                                   . . . .
                 </ul>
        </div>
</div>
 

CSS

Niente di particolare nel CSS, ho definito uno stile molto semplice e presentabile. L’unica istruzione da notare è la proprietà display della lista dei sottomenu che ho settato a none perché devono essere resi visibili dall’animazione jQuery solo al click su un item del menu.

 
.sub
{
            display: none;
}
 

jQUERY

Al click su un link del menu più esterno, quello principale per chiarirci, lo script esegue la funzione slideToggle sul rispettivo sottomenu: in questo modo questo comparirà o scomparirà a seconda che prima fosse visibile o nascosto.

Per applicare al menu l’effetto fisarmonica basta aggiungere la riga di codice che è nel commento dello script in modo tale da nascondere tutti i sottomenu eccetto quello che si sta per aprire. La funzione not ha proprio il compito di escludere un elemento dalla funzione a cui lo si collega.

 
$(document).ready(function()
    {
            $('.submenu_title a').click(function(ev)
            {
                       var sub = $(this).parent().next();
                       // PER L&rsquo;EFFETTO FISARMONICA BASTA AGGIUNGERE:
                          // $('.sub').not(sub).slideUp();
                       sub.stop(false,true).slideToggle();
                          // impedisco allo script di seguire il link
                       ev.preventDefault();
            });
});
 


Potrebbero interessarti anche :

Possono interessarti anche questi articoli :