Активация вкладки 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>
и следующий скрипт
$(document).ready(function(){
activaTab('aaa');
});
function activaTab(tab){
$('.tab-pane a[href="#' + tab + '"]').tab('show');
};
в этом случае, когда страница готова, вторая вкладка будет активирована, но я всегда получаю ошибку JavaScript в строке $('.tab-pane a[href="#' + tab + '"]').tab();
может кто-нибудь помочь мне, пожалуйста?
6 ответов:
применение селектора из
.nav-tabsКажется, работает: Смотрите демо.$(document).ready(function(){ activaTab('aaa'); }); function activaTab(tab){ $('.nav-tabs a[href="#' + tab + '"]').tab('show'); };Я бы предпочел ответ @codedme, так как если вы знаете, какую вкладку вы хотите до загрузки страницы, вы, вероятно, должны изменить html-страницу и не использовать JS для этой конкретной задачи.
я менял демо для его ответа, а также.
(Если это не работает для Вас, пожалуйста, указать ваши настройки браузера, окружающей среды и т. д.)
выполните щелчок по ссылке на якорь вкладки, когда страница будет готова, т. е.
$('a[href="' + window.location.hash + '"]').trigger('click');или в ванильном JavaScript
document.querySelector('a[href="' + window.location.hash + '"]').click();
<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 необходимо, fade в классах полезны для плавного перехода.
Это довольно просто из 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')
почему бы сначала не выбрать активную вкладку, а затем активировать выбранное содержимое вкладки ?
1. Сначала добавьте класс 'active' в элемент вкладки .
2. затем используйте set 'active' class для выбранного 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'); } }
добавить атрибут id в HTML-тег
<ul class="nav nav-tabs"> <li><a href="#aaa" data-toggle="tab" id="tab_aaa">AAA</a></li> <li><a href="#bbb" data-toggle="tab" id="tab_bbb">BBB</a></li> <li><a href="#ccc" data-toggle="tab" id="tab_ccc">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>затем с помощью JQuery
$("#tab_aaa").tab('show');
Comments