Активация вкладки Bootstrap с помощью JQuery
У меня есть следующий код
<ul class="nav nav-tabs">
<li><a href="#aaa" data-toggle="tab">AAA</a></li>
<li><a href="#bbb" data-toggle="tab">BBB</a></li>
<li><a href="#ccc" data-toggle="tab">CCC</a></li>
</ul>
<div class="tab-content" id="tabs">
<div class="tab-pane" id="aaa">...Content...</div>
<div class="tab-pane" id="bbb">...Content...</div>
<div class="tab-pane" id="ccc">...Content...</div>
</div>
И следующий script
$(document).ready(function(){
activaTab('aaa');
});
function activaTab(tab){
$('.tab-pane a[href="#' + tab + '"]').tab('show');
};
В этом случае, когда страница будет готова, вторая вкладка будет активирована, но я всегда получаю ошибку JavaScript в строке $('.tab-pane a[href="#' + tab + '"]').tab();
Кто-нибудь может мне помочь?
Ответы
Ответ 1
Применение селектора из .nav-tabs
похоже работает:
См. эту демонстрацию.
$(document).ready(function(){
activaTab('aaa');
});
function activaTab(tab){
$('.nav-tabs a[href="#' + tab + '"]').tab('show');
};
Я бы предпочел @codedme ответить, так как если вы знаете, какую вкладку вы хотите перед загрузкой страницы, вам, вероятно, следует изменить страницу html и не использовать JS для этой конкретной задачи.
Я также разработал демоверсию для своего ответа.
(Если это не работает для вас, укажите свои настройки - браузер, среда и т.д.)
Ответ 2
Хотя вопрос довольно старый, вот что я сделал. Выполните щелчок по ссылке на привязку вкладки, когда страница готова.
$('a[href="' + window.location.hash + '"]').trigger('click');
Ответ 3
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active"><a href="#aaa" data-toggle="tab">AAA</a></li>
<li><a href="#bbb" data-toggle="tab">BBB</a></li>
<li><a href="#ccc" data-toggle="tab">CCC</a></li>
</ul>
<div class="tab-content" id="tabs">
<div class="tab-pane fade active in" id="aaa">...Content...</div>
<div class="tab-pane" id="bbb">...Content...</div>
<div class="tab-pane" id="ccc">...Content...</div>
</div>
</div>
Добавить активный класс в любой элемент li, который вы хотите активировать после загрузки страницы.
А также добавление активного класса в контент div необходимо, выцветание в классах полезно для плавного перехода.
Ответ 4
Это довольно просто из w3schools: https://www.w3schools.com/bootstrap/bootstrap_ref_js_tab.asp
// Select tab by name
$('.nav-tabs a[href="#home"]').tab('show')
// Select first tab
$('.nav-tabs a:first').tab('show')
// Select last tab
$('.nav-tabs a:last').tab('show')
// Select fourth tab (zero-based)
$('.nav-tabs li:eq(3) a').tab('show')
Ответ 5
почему бы не выбрать активную вкладку сначала, а затем активировать выбранное содержимое вкладки?
1. Добавьте класс 'active' в <li> элемент вкладки первым.
2. затем используйте класс 'active' для выбранного div.
$(document).ready( function(){
SelectTab(1); //or use other method to set active class to tab
ShowInitialTabContent();
});
function SelectTab(tabindex)
{
$('.nav-tabs li ').removeClass('active');
$('.nav-tabs li').eq(tabindex).addClass('active');
//tabindex start at 0
}
function FindActiveDiv()
{
var DivName = $('.nav-tabs .active a').attr('href');
return DivName;
}
function RemoveFocusNonActive()
{
$('.nav-tabs a').not('.active').blur();
//to > remove :hover :focus;
}
function ShowInitialTabContent()
{
RemoveFocusNonActive();
var DivName = FindActiveDiv();
if (DivName)
{
$(DivName).addClass('active');
}
}