更改默认 Bootstrap 3 'tabs' 活动 class 元素
Changing default Bootstrap 3 'tabs' active class element
目前在 Bootstrap 3 中,当您使用 Bootstrap 的选项卡浏览窗格时,"active" class 被放置在 <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>
相反,我试图让 "active" class 继续 <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 事件 添加 "active" class <a>
元素使用下面的代码,但是我无法从以前的 "active" 元素中删除它,也不会阻止 "active" class 仍然在 <li>
元素上发生变化. 是否有简单轻量级的解决方案将默认行为从 <li>
移动到子 <a>
元素?
$('a[data-toggle="tab"]').on('show.bs.tab', function(event) {
$(event.target).addClass('active');
});
与@Mina Ragaie 的评论相反,注意问题内容很重要:
Instead, I am trying to get the "active" class to go on the element,
默认情况下,活动 class 跟随点击的 li,但如果您想在子锚标记上添加另一个活动 class,您需要将事件从 'show.bs.tab' 更改为'shown.bs.tab'。添加行:
$(this).closest('.nav').find('.active').removeClass('active');
为了删除任何添加的活动 class。
在下面的片段中有一个证据:
$('a[data-toggle="tab"]').on('shown.bs.tab', function(event) {
$(this).closest('.nav').find('.active').removeClass('active');
$(event.target).addClass('active');
}).first().trigger('shown.bs.tab');
a.active {
background-color: blue !important;
}
<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>
目前在 Bootstrap 3 中,当您使用 Bootstrap 的选项卡浏览窗格时,"active" class 被放置在 <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>
相反,我试图让 "active" class 继续 <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 事件 添加 "active" class <a>
元素使用下面的代码,但是我无法从以前的 "active" 元素中删除它,也不会阻止 "active" class 仍然在 <li>
元素上发生变化. 是否有简单轻量级的解决方案将默认行为从 <li>
移动到子 <a>
元素?
$('a[data-toggle="tab"]').on('show.bs.tab', function(event) {
$(event.target).addClass('active');
});
与@Mina Ragaie 的评论相反,注意问题内容很重要:
Instead, I am trying to get the "active" class to go on the element,
默认情况下,活动 class 跟随点击的 li,但如果您想在子锚标记上添加另一个活动 class,您需要将事件从 'show.bs.tab' 更改为'shown.bs.tab'。添加行:
$(this).closest('.nav').find('.active').removeClass('active');
为了删除任何添加的活动 class。
在下面的片段中有一个证据:
$('a[data-toggle="tab"]').on('shown.bs.tab', function(event) {
$(this).closest('.nav').find('.active').removeClass('active');
$(event.target).addClass('active');
}).first().trigger('shown.bs.tab');
a.active {
background-color: blue !important;
}
<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>