JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.0/jquery-ui.js"></script>
<div class="container-fluid">
<div class="row">
<div class="col p-2">
<div class="card mb-1 group-1">
<div class="card-header" data-cardgroup="group-1">Card One</div>
<div class="card-body" style="display: none;">Body One</div>
</div>
<div class="card mb-1 group-1">
<div class="card-header" data-cardgroup="group-1">Card Two</div>
<div class="card-body" style="display: none;">Body Two</div>
</div>
<div class="card mb-1 group-1">
<div class="card-header" data-cardgroup="group-1">Card Three</div>
<div class="card-body" style="display: none;">Body Three</div>
</div>
</div>
</div>
</div>
CSS
.card-header.active { background-color: #333; color: #eee }
.card-body.active { background-color: #292; }
JavaScript
$('.card-header').on('click', function(e) {
// toggle target
const cardHeader = $(e.currentTarget)
const cardBody = cardHeader.siblings('.card-body')
cardHeader.toggleClass('active')
cardBody.toggleClass('active').toggle('blind', {}, 200)
// close all but target
$(`.${e.currentTarget.dataset.cardgroup} .card-header`)
.not(cardHeader).removeClass('active')
$(`.${e.currentTarget.dataset.cardgroup} .card-body`)
.not(cardBody).removeClass('active').hide('blind', {}, 200)
})