Click here to Skip to main content
Click here to Skip to main content

Using jQueryUI Accordion to create a vertical menu

By , 6 Mar 2013
 

Introduction

A majority of web applications need a navigation menu and there are a lot plug-ins out the to create a great menu. In my case I had to create a vertical navigation menu with some expanding and collapsing behavior.  

There are a lot of solutions for creating such a menu. I was already using  jQueryUI and decided to use the Accordion for this purpose. This is what happened… Let's say that we have a simple site where we have home, projects, and About me pages and we need to create a vertical navigation menu for it using jQueryUI. 

Using the code  

The first step was to create an Accordion with the navigation links:

<div id="navigationMenu"> 
    <h3> <a href="#"> Home </a> </h3>
    <div> </div>
    <h3><a href="#"> Projects</a></h3> 
    <div> 
       <ul> 
          <li> <a href="#1"> Project 1</a> </li>
          <li> <a href="#2"> Project 2 </a> </li>
          <li> <a href="#3"> Project 3 </a> </li>
       </ul>
    </div>
    <h3> <a href="#"> About me</a></h3>
    <div></div>
</div>

We have to initialize the navigationMenu as an Accordion:

$(function () {
   //initializing the accordion
   $('#navigationMenu').accordion({
        collapsible: true,
        navigation: true,
        clearStyle: true
    });
});

OK, now we can add some code for customizing the navigation accordion. Let's decorate the menu headers and divs that don’t need to be collapsible and single with a class="single-menu-item" for headers and class="single-menu-container" for the divs:

<div id="navigationMenu"> 
  <h3 class="single-menu-item"> <a href="#"> Home </a> </h3>
  <div class="single-menu-container"> </div>
  <h3><a href="#"> Projects</a></h3> 
  <div> 
      <ul> 
          <li> <a href="#1"> Project 1</a> </li>
          <li> <a href="#2"> Project 2 </a> </li>
          <li> <a href="#3"> Project 3 </a> </li>
     </ul>
 </div>
 <h3 class="single-menu-item"> <a href="#"> About me</a></h3>
 <div class="single-menu-container"></div>
</div>

We unbind the click event from the single-menu element:

$(function () {
    //initializing the accordion
     ...
 
     $('.single-menu-item').unbind('click');
});

And as a last step we have to create some CSS rules for single-menu-item and single-menu-container that will rewrite the standard behavior of the jQuery accordion:  

#navigationMenu{ width: 270px; }
  .single-menu-item .ui-icon {display: none !important;}
  .single-menu-container {display: none !important;}

This was the last step. 

Now we have a vertical navigation menu! You can find the code of this example here.

If you have a great example of implementing a vertical navigation menu with jQuery, please provide the links in the comments section.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Daniel Killewo
Software Developer
Ukraine Ukraine
Member
I'm a .Net Developer. Love exploring and trying out new things.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
QuestionCool [modified]memberryanoc3337 Mar '13 - 3:34 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web01 | 2.6.130513.1 | Last Updated 6 Mar 2013
Article Copyright 2012 by Daniel Killewo
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid