Используйте .active
класс вместо :active
псевдокласса, который длится только до тех пор, пока пользователь удерживает нажатой кнопку мыши (или эквивалентное указывающее устройство). Вместо этого укажите целевой родительский элемент .panel-header
:
$('.panel-heading').on('click', function(e) {
$(this).toggleClass('active');
});
CSS был изменен для переопределения .panel-heading
с более высокой специфичностью путем удвоения класса:
.panel-heading.panel-heading {...
Некоторые Bootstrap классы не могут быть переопределены каскадным приоритетом, просто удвойте целевой класс, как показано выше - не используйте !important
Кроме того, поместите <link>
в <head>
, Поместите <script>
перед закрывающим тегом </body>
. См. Демо.
Демо
.panel-heading.panel-heading.active {
background: red;
}
.panel-title {
display: inline-block;
width: 100%;
}
.panel-heading.panel-heading.active .panel-title {
color: white;
font-weight: 900;
}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<a data-toggle="collapse" class="panel-title" href="#collapse1">Title</a>
</div>
<div id="collapse1" class="panel-collapse collapse">
<ul class="list-group">
<li class="list-group-item">item 1</li>
<li class="list-group-item">item 2</li>
</ul>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<script>
$('.panel-heading').on('click', function(e) {
$(this).toggleClass('active');
});
</script>
</body>
</html>