Reputation: 3074
I want to add an 'active' class of clicked <li>
link and remove all 'active' class from siblings.
I tried as follows:
$(document).ready(function(){
$('#account-settings').on('click',function(){
$(this).addClass('active').siblings().removeClass('active');
});
});
It adds 'active' class to clicked item but not remove 'active' from siblings.
Snippet:
$(document).ready(function() {
$('#account-settings').on('click', function() {
$(this).addClass('active').siblings().removeClass('active');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="nav">
<li class="active" id="account-overview">
<a href="javascript:void(0)">
<i class="icon-home"></i> Overview </a>
</li>
<li>
<a href="javascript:void(0)" id="account-settings">
<i class="icon-settings"></i> Account Settings </a>
</li>
<li>
<a href=" /demo-home19/resellers/logout">
<i class="icon-settings"></i> Logout </a>
</li>
</ul>
Upvotes: 0
Views: 53
Reputation: 312
You may try doing
$('.nav').children('li').on('click',function(){
$('.nav').children('li').removeClass('active');
$(this).addClass('active');
});
Upvotes: 0
Reputation: 32354
try:
$('#account-settings').on('click',function(){
var li = $(this).parent('li')
li.parent().find('li').removeClass('active');
li.addClass('active');
});
or:
$('#account-settings').on('click',function(){
var li = $(this).parent('li')
li.siblings().removeClass('active');
li.addClass('active');
});
or
$('#account-settings').on('click',function(){
$(this).parent('li').addClass('active').siblings().removeClass('active');
});
Upvotes: 1
Reputation: 701
Use this instead of id #account-settings
$('ul li').on('click',function(){....
....
Upvotes: 1