I have an ul-list that contains li-elements. When the user clicks on one of these li elements a class should be added to that element.
This is easy to setup, however, when the other li-element is clicked I want the "active"-class to be removed from the non-active li.
I have made a jsfiddle of the problem:
http://jsfiddle.net/tGW3D/
There should be one li-element that is red at any one time. If you click the second and then the first, only the first should be red.
This will remove the active class from each li that have active and than will add to the Element which was clicked.
$('body').on('click', 'li', function() {
$('li.active').removeClass('active');
$(this).addClass('active');
});
You can use siblings
and removeClass
methods.
$('li').click(function() {
$(this).addClass('active').siblings().removeClass('active');
});
http://jsfiddle.net/Lb65e/
Just remove all instances of .active
first, and then add it:
$('ul li').on('click', function() {
$('ul li.active').removeClass('active');
$(this).addClass('active');
});
$('li').click(function() {
$(this).siblings().removeClass('active');
$(this).addClass('active');
});
Check:
http://jsfiddle.net/tGW3D/2/
Something like this?
http://jsfiddle.net/c7ZE4/
You can use the siblings function. addClass returns the same jquery object $(this) so you can chain the siblings method which returns all the other elements except $(this).
$('li').click(function() {
$(this).addClass('active').siblings().removeClass('active');
});
$('li').click(function() {
$(this).addClass('active'); // add the class to the element that's clicked.
$(this).siblings().removeClass('active'); // remove the class from siblings.
});
If you know jquery you can chain it like below.
$('li').click(function() {
$(this).addClass('active').siblings().removeClass('active');
});
Above code will do the trick for you. Try this demo
<script>
$(function() {
$('li').click(function() {
$("li.active").removeClass("active");
$(this).addClass('active');
});
});
</script>
You change css class by this code:
$('li').click(function() {
$(this).addClass('active').siblings().removeClass('active');
});
Link to jsfiddle