How to open specific tab of bootstrap nav tabs on click of a particuler link using jQuery?

前端 未结 8 2089
Happy的楠姐
Happy的楠姐 2020-11-29 01:32

I am new to jquery and bootstrap,so please consider my mistakes.I have created a bootstrap modal for login and registration. It contains two nav-tabs called as login and reg

相关标签:
8条回答
  • 2020-11-29 02:10

    Hi Try this one folks!

    $('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
      // save current clicked tab in local storage does not work in Stacksnippets
      // localStorage.setItem('lastActiveTab', $(this).attr('href'));
    });
    //get last active tab from local storage
    var lastTab = "#profile"; // localStorage.getItem('lastActiveTab');
    console.log(lastTab + "tab was last active")
    if (lastTab) {
      $('[href="' + lastTab + '"]').tab('show');
    }
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    
    <div class="container">
      <div>
        <!-- Nav tabs -->
        <ul class="nav nav-tabs" role="tablist">
          <li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
          <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li>
          <li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li>
          <li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li>
        </ul>
    
        <!-- Tab panes -->
        <div class="tab-content">
          <div role="tabpanel" class="tab-pane active" id="home">Home</div>
          <div role="tabpanel" class="tab-pane" id="profile">Profile</div>
          <div role="tabpanel" class="tab-pane" id="messages">Message</div>
          <div role="tabpanel" class="tab-pane" id="settings">Settings</div>
        </div>
    
      </div>
    </div>

    0 讨论(0)
  • 2020-11-29 02:13

    Not sure if I understood correctly but here is snippet that I use to open links from Bootstrap tab menu:

    HTML

    <ul class="nav nav-tabs">
      <li class="active"><a href="#foo" data-toggle="tab">Foo</a></li>
      <li><a href="#bar" data-toggle="tab">Bar</a></li>
      <li><a href="baz.html" class="external">Baz</a></li>
    </ul>
    
    <div class="tab-content">
      <div class="tab-pane active" id="foo">Foo</div>
      <div class="tab-pane" id="bar">Bar</div>
    </div>
    

    Javascript

    $('.nav a:not(".external")').click(function (e) {
      e.preventDefault()
      $(this).tab('show')
    })
    
    0 讨论(0)
  • 2020-11-29 02:14

    Thanks for above answer , here is my jQuery code that is working now:

          $(".header-login-li").click(function(){
            activaTab('pane_login');                
          });
    
          $(".header-register-li").click(function(){
            activaTab('pane_reg');
            $("#reg_log_modal_header_text").css()
          });
    
          function activaTab(tab){
            $('.nav-tabs a[href="#' + tab + '"]').tab('show');
          };
    
    0 讨论(0)
  • 2020-11-29 02:15
        function updateURL(url_params) {
            if (history.pushState) {
            var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + '?' + url_params;
            window.history.replaceState({path:newurl},'',newurl);
            }
        }
    
        function setActiveTab(tab) {
            $('.nav-tabs li').removeClass('active');
            $('.tab-content .tab-pane').removeClass('active');
    
            $('a[href="#tab-' + tab + '"]').closest('li').addClass('active');
            $('#tab-' + tab).addClass('active');
        }
    
        // Set active tab
        $url_params = new URLSearchParams(window.location.search);
    
    
        // Get active tab and remember it
        $('a[data-toggle="tab"]')
            .on('click', function() {
            $href = $(this).attr('href')
            $active_tab = $href.replace('#tab-', '');
    
            $url_params.set('tab', $active_tab);
            updateURL($url_params.toString());
        });
    
        if ($url_params.has('tab')) {
            $tab = $url_params.get('tab');
            $tab = '#tab-' + $tab;
            $myTab = JSON.stringify($tab);
            $thisTab = $('.nav-tabs a[href=' + $myTab  +']');
            $('.nav-tabs a[href=' + $myTab  +']').tab('show');
        }
    
    0 讨论(0)
  • 2020-11-29 02:17

    May I suggest a php+css solution I used on my site? It's simple and no js problems :)

    url to page: <a href="page.php?tab=menu1">link to menu1</a>

    <?
    $tab = $_GET['tab'];
    ?>
    <ul class="nav nav-tabs">
      <li class="<? if ($tab=='menu1' OR $tab=='menu2') 
    {
    echo "";
    } 
    else {
    echo "active";
    }
    ?>"><a data-toggle="tab" href="#home">Prodotti</a></li>
      <li class="<? if ($tab=='menu1') 
    {
    echo "active";
    } 
    ?>"><a data-toggle="tab" href="#menu1">News</a></li>
      <li class="<? if ($tab=='menu2') 
    {
    echo "active";
    } 
    ?>"><a data-toggle="tab" href="#menu2">Gallery</a></li>
    </ul>
    
    <div class="tab-content">
      <div id="home" class="tab-pane fade <? if ($tab=='menu1' OR $tab=='menu2') 
    {
    echo "";
    } 
    else {
    echo "in active";
    }
    ?>
    ">
        <h3>Prodotti</h3>
        <p>Contenuto della pagina, zona prodotti</p>
      </div>
      <div id="menu1" class="tab-pane fade <? if ($tab=='menu1') 
    {
    echo "in active";
    } 
    ?>">
        <h3>News</h3>
        <p>Qui ci saranno le news.</p>
      </div>
      <div id="menu2" class="tab-pane fade <? if ($tab=='menu2') 
    {
    echo "in active";
    } 
    ?>">
        <h3>Gallery</h3>
        <p>Qui ci sarà la gallery</p>
      </div>
    </div>
    
    0 讨论(0)
  • 2020-11-29 02:25

    Applying a selector from the .nav-tabs seems to be working

    HTML is

    <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 is

    $(document).ready(function(){
      activaTab('aaa');
    });
    
    function activaTab(tab){
      $('.nav-tabs a[href="#' + tab + '"]').tab('show');
    };
    

    http://jsfiddle.net/pThn6/80/

    0 讨论(0)
提交回复
热议问题