Изменение стандартного Bootstrap 3 'tabs' активного элемента класса
В настоящее время в Bootstrap 3, когда вы перемещаетесь по панелям с помощью вкладок Bootstrap, "активный" класс помещается в <li>
элемент вроде так:
<ul class="nav navbar-nav">
<li class="active"><a href="#A" data-toggle="tab">A</a></li>
<li><a href="#B" data-toggle="tab">B</a></li>
<li><a href="#C" data-toggle="tab">C</a></li>
</ul>
Вместо этого я пытаюсь заставить "активный" класс <a>
элемент, вот так:
<ul class="nav navbar-nav">
<li><a class="active" href="#A" data-toggle="tab">A</a></li>
<li><a href="#B" data-toggle="tab">B</a></li>
<li><a href="#C" data-toggle="tab">C</a></li>
</ul>
Я смог добавить "активный" класс с помощью событий Bootstrap JavaScript в <a>
элемент, используя приведенный ниже код, однако я не смог удалить его из ранее "активных" элементов, и при этом он не помешает "активному" классу все еще меняться на <li>
элементы. Существует ли простое и легкое решение для перемещения поведения по умолчанию из <li>
ребенку <a>
элемент?
$('a[data-toggle="tab"]').on('show.bs.tab', function(event) {
$(event.target).addClass('active');
});
1 ответ
Решение
Измените событие с "show.bs.tab" на "seen.bs.tab". Добавьте строку:
$(this).closest('.nav').find('.active').removeClass('active');
для того, чтобы удалить любой активный класс.
$('a[data-toggle="tab"]').on('shown.bs.tab', function(event) {
$(this).closest('.nav').find('.active').removeClass('active');
$(event.target).addClass('active');
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<ul class="nav navbar-nav">
<li class="active"><a href="#A" data-toggle="tab">A</a></li>
<li><a href="#B" data-toggle="tab">B</a></li>
<li><a href="#C" data-toggle="tab">C</a></li>
</ul>