Reputation: 925
What I'm trying to do is replicate an accordian type jQuery widget
I have the following code:
$('a').on('click', function (e) {
var active = $(this).parent().next();
active.toggleClass('active');
active.siblings().not(active).removeClass('active');
e.preventDefault();
});
Although active.siblings().not(active).removeClass('active'); does not work how I want it to do I basically want it to select all siblings UL tags and any children UL tags of the siblings but exclude the Active/Current selection.
I have setup this fiddle as an example http://jsfiddle.net/7u3pw1hz/
Upvotes: 1
Views: 1865
Reputation: 388316
The problem is, the other ul
elements are not siblings, they are children of sibling li
elements of current li
$('a').on('click', function(e) {
var active = $(this).parent().next();
active.toggleClass('active');
active.parent().siblings().children('ul').removeClass('active');
active.find('ul').removeClass('active');
e.preventDefault();
});
ul ul.active {
max-height: 800px;
}
ul ul {
max-height: 0;
overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
<li><span><a href="category.html">Shop</a> <i class="icon-expand_more"></i></span>
<ul class="active">
<li>
<span><a href="category.html">Sleeping Bags</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="category.html">Medium Sleeping Bags</a></li>
<li><a href="category.html">Winter Sleeping Bags</a></li>
<li><a href="category.html">Summer Sleeping Bags</a></li>
</ul>
</li>
<li>
<span><a href="category.html">Swaddles</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
</ul>
</li>
<li>
<span><a href="category.html">Linen</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
</ul>
</li>
<li>
<span><a href="category.html">Clothing</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
</ul>
</li>
<li>
<span><a href="category.html">My Room</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
</ul>
</li>
<li>
<span><a href="category.html">Tool Box</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
</ul>
</li>
<li>
<span><a href="category.html">Wellbeing</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
</ul>
</li>
<li>
<span><a href="category.html">Feed</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
</ul>
</li>
<li>
<span><a href="category.html">Bath</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
</ul>
</li>
<li>
<span><a href="category.html">Carriers</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
</ul>
</li>
<li>
<span><a href="category.html">Gifts</a> <i class="icon-expand_more"></i></span>
<ul class="menu">
<li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
<li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
<li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
<li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
</ul>
</li>
</ul>
</li>
<li><span><a href="category.html">Brands</a></span></li>
</ul>
Upvotes: 6