Во-первых, обратите внимание на будущее, что ваш оператор if
для проверки видимости элемента, а затем добавления / удаления класса может быть заменен всего одним вызовом toggleClass()
.требование, если вы просто хотите анимировать переход элемента, когда он отображается или скрыт, вы можете использовать slideToggle()
:
$(".item").click(function() {
$(this).find('.item_group').slideToggle();
})
.item {
position: relative;
}
.item .item_group {
display: none;
position: absolute;
width: 100%;
background: #fff;
z-index: 100;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item active">
<h6>Title</h6>
<div class="item_group">
<div class="item_child">
content
</div>
<div class="item_child">
content
</div>
<div class="item_child">
content
</div>
</div>
</div>
Этого также можно добиться только в CSS, используя transition
:
$(".item").click(function() {
$(this).toggleClass('active');
})
.item {
position: relative;
}
.item .item_group {
height: 0;
position: absolute;
width: 100%;
background: #fff;
z-index: 100;
transition: height 0.5s;
overflow: hidden;
}
.item.active .item_group {
height: 55px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item active">
<h6>Title</h6>
<div class="item_group">
<div class="item_child">
content
</div>
<div class="item_child">
content
</div>
<div class="item_child">
content
</div>
</div>
</div>