Click here to Skip to main content
15,888,195 members
Articles / jQuery-UI

Using jQueryUI accordion to Create a Vertical Menu

Rate me:
Please Sign up or sign in to vote.
4.75/5 (4 votes)
29 Mar 2012CPOL1 min read 19K   4   3
Using jQueryUI accordion to create a vertical menu

A majority of web applications need a navigation menu and there are a lot of plug-ins out there 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 jQuery UI 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 a home, projects and about me pages and we need to create a vertical navigation menu for it using jQuery UI.

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

HTML
 1 <div id="navigationMenu"> 
 2     <h3> <a href="#"> Home </a> </h3>
 3     <div> </div>
 4     <h3><a href="#"> Projects</a></h3> 
 5     <div> 
 6        <ul> 
 7           <li> <a href="#1"> Project 1</a> </li>
 8           <li> <a href="#2"> Project 2 </a> </li>
 9           <li> <a href="#3"> Project 3 </a> </li>
10        </ul>
11     </div>
12     <h3> <a href="#"> About me</a></h3>
13     <div></div>
14 </div>

We have to initialize the navigationMenu as an accordion:

JavaScript
1 $(function () {
2    //initializing the accordion
3    $('#navigationMenu').accordion({
4         collapsible: true,
5         navigation: true,
6         clearStyle: true
7     });
8 });

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:

HTML
1 <div id="navigationMenu"> 
 2         <h3 class="single-menu-item"> <a href="#"> Home </a> </h3>
 3         <div class="single-menu-container"> </div>
 4         <h3><a href="#"> Projects</a></h3> 
 5         <div> 
 6             <ul> 
 7                 <li> <a href="#1"> Project 1</a> </li>
 8                 <li> <a href="#2"> Project 2 </a> </li>
 9                 <li> <a href="#3"> Project 3 </a> </li>
10             </ul>
11         </div>
12         <h3 class="single-menu-item"> <a href="#"> About me</a></h3>
13         <div class="single-menu-container"></div>
14 </div>

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

JavaScript
1 $(function () {
2    //initializing the accordion
3     ...
4 
5     $('.single-menu-item').unbind('click');
6 }); 

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:

CSS
1 #navigationMenu{ width: 270px; }
2 .single-menu-item .ui-icon {display: none !important;}
3 .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 write some links down in the comments.

This article was originally posted at http://daniel-ki.blogspot.com/feeds/posts/default

License

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


Written By
Software Developer
Ukraine Ukraine
I'm a .Net Developer. Love exploring and trying out new things.

Comments and Discussions

 
GeneralMy vote of 4 Pin
rama charan19-Jun-12 19:44
rama charan19-Jun-12 19:44 
Thanks for post.Its easy to use.
The JS library scripts which need to be included to run the app need to be mentioned in the article (of course you did in the downloadable code).
HTML
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.js"></script>
   <script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.17/jquery-ui.js"></script>

GeneralMy vote of 5 Pin
Justin Cooney29-Mar-12 9:47
Justin Cooney29-Mar-12 9:47 
GeneralRe: My vote of 5 Pin
Daniel Killyevo5-Apr-12 2:54
Daniel Killyevo5-Apr-12 2:54 

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

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.