Событие click вызывается при нажатии на label
, поэтому я добавил id
к каждой метке, как вы можете видеть ниже.
Кроме того, я удалил data-toggle
с кнопки Yes
, поскольку она всегда переключала коллапс без необходимости использования вашей функции, таким образом, только функция контролирует переключение.
В этой функции вы проверяете, какая кнопка была нажата, если да или нет, а затем делаете то, что она должна делать.
jQuery('.btn-active').click(function(e) {
if (e.target.id == "showCollapse"){
jQuery('.collapse').collapse('show');
} else if (e.target.id == "hideCollapse"){
jQuery('.collapse').collapse('hide');
}
});
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"/>
<div class="container">
<div class="row">
<div class="col-12">
<div class="btn-group btn-group-toggle d-flex btn-active " data-toggle="buttons">
<label class="btn btn-primary w-100 active" data-target="#expolicy" id="showCollapse">
<input type="radio" name="options" id="option1" autocomplete="off"> Yes
</label>
<label class="btn btn-primary w-100" id="hideCollapse">
<input type="radio" name="options" id="option2" autocomplete="off"> No
</label>
</div>
</div>
<div class="col-12">
<div class="collapse show" id="expolicy">
This is the collapse. It opens/closes when the user clicks "Yes". It should close only when the user clicks "No" and open only when the User clicks "Yes". It is open by default.
</div>
</div>
</div>
</div>