I’m figure out for how to remove class selected when clicking other button. I’ve made code below but still not working. Can anyone help me?
EDIT
The case study, I have 2 choice boxes. box 1 and box 2. each box has 2 options. When click on box 1 option 1 and move to box 1 option 2, it works fine. But when I click box 2 option 1, the options in box 1 should not change. So there will be 2 buttons that have the selected class, namely box 1 choice 2 and box 2 choice 1
$(document).ready(function(){
$('.box-1 button, .box-2 button').on('click', function(){
$(this).addClass('selected');
$('.box-1 button, .box-2 button').not(this).removeClass('selected');
});
});button{
border:none;
background-color:#1f45;
padding: .5rem 2.5rem;
border-radius: 2rem;
}
.box-1{
margin-bottom: 15px;
}
button.selected{
background-color: #578889;
color: #fff;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <h3>Box 1 Choice</h3> <div class="box-1"> <button>Box 1 Option 1</button> <button>Box 1 Option 2</button> </div> <h3>Box 2 Choice</h3> <div class="box-2"> <button>Box 2 Option 1</button> <button>Box 2 Option 2</button> </div>
Advertisement
Answer
You can use .not(this) to exclude button which is clicked and remove selected class from there
Demo Code :
$(document).ready(function() {
$('button').on('click', function() {
$(this).addClass('selected');
$(this).closest('div').find('button').not(this).removeClass('selected');
});
});button {
border: none;
background-color: #1f45;
padding: .5rem 2.5rem;
border-radius: 2rem;
}
button.selected {
background-color: #578889;
color: #fff;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="box-1"> <button>Box 1 Option 1</button> <button>Box 1 Option 2</button> </div> <div class="box-2"> <button>Box 2 Option 1</button> <button>Box 2 Option 2</button> </div>
