Подтвердить что ты не робот

Активация вкладки 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();

Кто-нибудь может мне помочь?

4b9b3361

Ответ 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'); 
        } 
    }