Я создаю эффект аккордеона, используя Boostrap Collapse .
Я настроил кнопку для отображения значка вниз, чтобы развернуться, и значка вверх, чтобы свернуть, используя событие нажатия jquery.
HTML
<div id="accordion">
<div class="card bg-primary myRounded">
<div class="card-eader bg-white myRounded" id="headingTwo">
<h5 class="mb-0">
<button id="btnExpand" class="btn btn-link float-right collapsed" data-toggle="collapse" data-target="#collapseOne" aria-expanded="false" aria-controls="collapseTwo">
<i class="fas fa-chevron-circle-down fa-2x"></i>
</button>
</h5>
</div>
<div id="collapseOne" class="collapse" aria-labelledby="headingTwo" data-parent="#accordion">
<div class="card-body">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
</div>
</div>
И jquery.
$('#btnExpand').click(function() {
$('.collapse')
.on('shown.bs.collapse', function() {
$(this)
.parent()
.find(".fa-chevron-circle-down")
.removeClass("fa-chevron-circle-down")
.addClass("fa-chevron-circle-up");
})
.on('hidden.bs.collapse', function() {
$(this)
.parent()
.find(".fa-chevron-circle-up")
.removeClass("fa-chevron-circle-up")
.addClass("fa-chevron-circle-down");
});
});
Пример можно найти здесь:
jsfiddle
Проблема, с которой я столкнулся, заключается в том, что значок не меняется сразу после нажатия на него, а ждет, пока развернутый / свернутый раскрывающийся список будет отображен первым. Если щелкнуть стрелку вниз, вы увидите, что перед отображением значка «вверх» есть небольшая задержка, и наоборот.
Можно ли изменить это поведение, чтобы значок менялся при нажатии кнопки?
Спасибо