Reputation: 67
Can somebody help me, I am havig trouble figuring out how to remove/add active class for vertical menu?
HTML
<ul class="vertical__menu">
<li>
<a class="vertical__menu-item--active" href="#">Truck Route</a>
</li>
<li>
<a class="vertical__menu-item" href="#">Location Map</a>
</li>
<li>
<a class="vertical__menu-item" href="#">Major Retailers Map</a>
</li>
</ul>
CSS
.vertical__menu-item {
color: blue
}
.vertical__menu-item--active {
color: red
}
JQUERY
$(document).ready(function () {
$('ul.vertical__menu li a').click(function () {
$('vertical__menu-item').removeClass("--active");
$(this).addClass("--active");
});
});
Upvotes: 2
Views: 407
Reputation: 8525
Why don't you just seperate the vertical__menu-item
to active
html
<ul class="vertical__menu">
<li><a class="vertical__menu-item active" href="#">Truck Route</a></li>
<li><a class="vertical__menu-item" href="#">Location Map</a></li>
<li><a class="vertical__menu-item" href="#">Major Retailers Map</a></li>
</ul>
style.css
.vertical__menu-item {
color: blue
}
.vertical__menu-item.active {
color: red
}
jquery
$(document).ready(function () {
$('ul.vertical__menu li a').click(function () {
$('.vertical__menu-item').removeClass("active");
$(this).addClass("active");
});
});
Upvotes: 2
Reputation: 1113
You need to add/remove the class .vertical__menu-item--active
, in your code currently you are removing the class --active
which doesn't exist in your css. You're also not selecting items currently in your jquery and you're missing .vertical__menu-item
on the first list item in your mark up so it will not be selected when you're trying to remove the .vertical__menu-item--active
class, check the working demo below:
$(document).ready(function () {
$('.vertical__menu-item').click(function () {
$('.vertical__menu-item').removeClass("vertical__menu-item--active ");
$(this).addClass("vertical__menu-item--active ");
});
});
.vertical__menu-item {
color: blue
}
.vertical__menu-item--active {
color: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="vertical__menu">
<li>
<a class="vertical__menu-item vertical__menu-item--active" href="#">Truck Route</a>
</li>
<li>
<a class="vertical__menu-item" href="#">Location Map</a>
</li>
<li>
<a class="vertical__menu-item" href="#">Major Retailers Map</a>
</li>
</ul>
Upvotes: 2
Reputation: 272901
You have to remove the class from the previous active element then add it to the new one considering the full class name and not only its suffix --active
:
$(document).ready(function() {
$('ul.vertical__menu li a').click(function() {
/*Select only the active element without forgeting the '.' */
$('.vertical__menu-item--active').removeClass("vertical__menu-item--active");
/*Adding the class to the current one*/
$(this).addClass("vertical__menu-item--active");
});
});
.vertical__menu-item {
color: blue
}
.vertical__menu-item--active {
color: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="vertical__menu">
<li>
<a class="vertical__menu-item--active" href="#">Truck Route</a>
</li>
<li>
<a class="vertical__menu-item" href="#">Location Map</a>
</li>
<li>
<a class="vertical__menu-item" href="#">Major Retailers Map</a>
</li>
</ul>
Upvotes: 2