Why when I use if/else statements I get unexpected behavior of the filters button I mean the state value of the class attribute is assigned to several buttons but not only one. When I use two if statement I get the needed behavior of buttons
//declate states-filters
var $all = $("#all"); //find all items
var $active = $('#active'); //find active items
var $completed = $("#completed"); //find completeditems
//filter-all
$all.on('click', function(){
if($all.is('[class!="active"]')){ //check the element have the active value of the class
if($completed.has('[class="active"]')){
$completed.removeClass('active'); $all.addClass('active')
}
if($active.has('[class="active"]')){
$active.removeClass('active'); $all.addClass('active')
}
}
})
//filter-active
$active.on('click', function(){
if($active.is('[class!="active"]')){ //check the element have the active value of the class
if ($all.has('[class="active"]')) {
$all.removeClass('active'); $active.addClass('active');
} if ($completed.has('[class="active"]')){
$completed.removeClass('active'); $active.addClass('active')
}
}
})
//filter-complete
$completed.on('click', function(){
if($completed.is('[class!="active"]')){ //check the element have the active value of the class
if ($all.has('[class="active"]')) {
$all.removeClass('active'); $completed.addClass('active');
} if ($active.has('[class="active"]')){
$active.removeClass('active'); $completed.addClass('active')
}
}
})
<div class="states-filter">
<p class="state active" id="all"> All </p>
<p class="state" id="active"> Active </p>
<p class="state" id="completed"> Completed </p>
</div>