I want to create multilevel accordion Navigation using jQuery , I tried using this script but it not allow the multi-level. Please view the Image what exactly I am looking for,
Thanks
I want to create multilevel accordion Navigation using jQuery , I tried using this script but it not allow the multi-level. Please view the Image what exactly I am looking for,
http://www.i-marco.nl/weblog/jquery-accordion-menu/#
Thanks
Share Improve this question edited Jul 1, 2019 at 22:04 Glorfindel 22.7k13 gold badges89 silver badges118 bronze badges asked Mar 17, 2010 at 7:53 Wasim ShaikhWasim Shaikh 7,03018 gold badges62 silver badges88 bronze badges 02 Answers
Reset to default 13First markup your items like so. You'll want to mark any submenus with the "accordion" class.
<ul class="accordion">
<li><a class="head" href="#">Item 1</a>
<ul class="accordion">
<li><a href="#">Item 1 - 1 </a></li>
<li><a href="#">Item 1 - 2</a></li>
<li>
<a href="#">Item 1 - 3</a>
<ul class="accordion">
<li><a href="#">Item 1 - 3 - 1</a></li>
<li><a href="#">Item 1 - 3 - 1 </a></li>
<li><a href="#">Item 1 - 3 - 1</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Item 2</a></li>
<li>
<a href="#">Item 3</a>
<ul class="accordion">
<li><a href="#">Item 3 - 1 </a></li>
<li><a href="#">Item 3 - 2</a></li>
<li><a href="#">Item 3 - 2</a></li>
</ul>
</li>
</ul>
After that just use jQuery UI's accordion plugin (Don't forget to include the jQuery core file and jQuery UI file.
<script type="text/javascript">
$(function() {
$(".accordion").accordion();
});
</script>
http://jqueryui./demos/accordion/
Use CSS to style as required. Of course, the structures and the class names can be changed as preferred. This is just the easiest solution
This is also a good option for nested level accordion using Jquery:
$('.toggle').click(function(e) {
e.preventDefault();
var $this = $(this);
if ($this.next().hasClass('show')) {
$this.next().removeClass('show');
$this.next().slideUp(350);
} else {
$this.parent().parent().find('li .inner').removeClass('show');
$this.parent().parent().find('li .inner').slideUp(350);
$this.next().toggleClass('show');
$this.next().slideToggle(350);
}
});
* {
box-sizing: border-box;
font-family: 'Open Sans', sans-serif;
font-weight: 300;
}
a {
text-decoration: none;
color: inherit;
}
p {
font-size: 1.1em;
margin: 1em 0;
}
ul {
list-style: none;
padding: 0;
}
ul .inner {
padding-left: 1em;
overflow: hidden;
display: none;
}
ul .inner.show {
/*display: block;*/
}
ul li {
margin: 0.5em 0;
}
ul li a.toggle {
width: 100%;
display: block;
background: rgba(0, 0, 0, 0.78);
color: #fefefe;
padding: 0.75em;
border-radius: 0.15em;
transition: background 0.3s ease;
}
ul li a.toggle:hover {
background: rgba(0, 0, 0, 0.9);
}
<script src="https://cdnjs.cloudflare./ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="accordion">
<li>
<a class="toggle" href="javascript:void(0);">Item 1</a>
<ul class="inner">
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
</ul>
</li>
<li>
<a class="toggle" href="javascript:void(0);">Item 2</a>
<ul class="inner">
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
</ul>
</li>
<li>
<a class="toggle" href="javascript:void(0);">Item 3</a>
<ul class="inner">
<li>
<a href="#" class="toggle">Open Inner</a>
<div class="inner">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus placerat fringilla. Duis a elit et dolor laoreet volutpat. Aliquam ultrices mauris id mattis imperdiet. Aenean cursus ultrices justo et varius. Suspendisse aliquam orci id dui dapibus
blandit. In hac habitasse platea dictumst. Sed risus velit, pellentesque eu enim ac, ultricies pretium felis.
</p>
</div>
</li>
<li>
<a href="#" class="toggle">Open Inner #2</a>
<div class="inner">
<p>
Children will automatically close upon closing its parent.
</p>
</div>
</li>
<li>Option 3</li>
</ul>
</li>
<li>
<a class="toggle" href="javascript:void(0);">Item 4</a>
<ul class="inner">
<li>
<a href="#" class="toggle">Technically any number of nested elements</a>
<ul class="inner">
<li>
<a href="#" class="toggle">Another nested element</a>
<div class="inner">
<p>
As long as the inner element has inner as one of its classes then it will be toggled.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus placerat fringilla. Duis a elit et dolor laoreet volutpat. Aliquam ultrices mauris id mattis imperdiet. Aenean cursus ultrices justo et varius. Suspendisse aliquam orci id dui dapibus
blandit. In hac habitasse platea dictumst. Sed risus velit, pellentesque eu enim ac, ultricies pretium felis.
</p>
</div>
</li>
</ul>
</li>
<li>Option 2</li>
<li>Option 3</li>
</ul>
</li>
</ul>