Вы можете просто добавить класс CSS, а затем использовать .toggle()
для включения / выключения класса для выбранного элемента, чтобы удалить класс из групповых элементов и исключить текущий выбранный элемент вы можете использовать .not()
и .remove()
:
$(this).parent().find('.childDiv').not(this).removeClass('selected');
Вот рабочий фрагмент или скрипка :
$('.childDiv').click(function(){
$(this).parent().find('.childDiv').not(this).removeClass('selected');
$(this).toggleClass('selected');
});
.parentDiv{
border:1px solid black;
padding:10px;
width: 80px;
margin:5px;
display:relative;
}
.childDiv{
border:1px solid blue;
height: 50px;
margin:10px;
}
.selected {
background-color: #ff0000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="divParent1" class="parentDiv">
Group 1
<div id="child1" class="childDiv">
Child 1
</div>
<div id="child2" class="childDiv">
Child 2
</div>
</div>
<div id="divParent2" class="parentDiv">
Group 2
<div id="child1" class="childDiv">
Child 1
</div>
<div id="child2" class="childDiv">
Child 2
</div>
</div>
в случае, если вы хотите отменить выбор всех элементов на странице, вы можете просто удалить .parent().find()
, и это будет работать для всех элементов:
$('.childDiv').click(function(){
$('.childDiv').not(this).removeClass('selected');
$(this).toggleClass('selected');
});
.parentDiv{
border:1px solid black;
padding:10px;
width: 80px;
margin:5px;
display:relative;
}
.childDiv{
border:1px solid blue;
height: 50px;
margin:10px;
}
.selected {
background-color: #ff0000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="divParent1" class="parentDiv">
Group 1
<div id="child1" class="childDiv">
Child 1
</div>
<div id="child2" class="childDiv">
Child 2
</div>
</div>
<div id="divParent2" class="parentDiv">
Group 2
<div id="child1" class="childDiv">
Child 1
</div>
<div id="child2" class="childDiv">
Child 2
</div>
</div>