如何使用jQuery单击特定链接打开引导导航选项卡的特定选项卡?

sac*_*are 64 html javascript css jquery twitter-bootstrap

我是jquery和bootstrap的新手,所以请考虑我的错误.我已经创建了一个用于登录和注册的bootstrap模式.它包含两个称为登录和注册的导航标签.我有两个按钮,弹出相同的模态窗口,但在模态窗口内显示不同的标签.在每个选项卡中都有一个包含许多输入的表单.我的问题是当我点击"登录"按钮并在我点击页面上的"注册"按钮时打开注册标签时,弹出模式中打开的模式弹出模式.

这些是模式打开的2个链接:

<div class="header-login-li" style="background-color:gray;float:left;width:100px;height:60px;">
<a data-toggle="modal" href="#regestration" class="header-register-a" >
<big>
<font color="white" class="header-register-font"><center style="margin-top:20px;">Login <i class="icon-chevron-down" style="font-size:20px"></i></center></font>
</big></a></div>

<div class="header-register-li" style="background-color:green;float:right;margin-right:-15px;width:130px;height:60px;">
<a data-toggle="modal" href="#regestration" class="header-register-a" >
<big>
<font color="white" class="header-register-font"><center style="margin-top:20px;">Register</center></font>
</big></a>
Run Code Online (Sandbox Code Playgroud)

这是我的标签代码及其内容(我在这里避免不必要的代码):

 <div class="tabbable" >
      <ul class="nav nav-tabs" ><!--tabs-->
        <li class="active" style="position:absolute;margin-left:0px;" id="logintab">
        <a href="#pane_login" data-toggle="tab">Login</a></li>
        <li style="margin-left:70px;" id="reg_tab" ><a href="#pane_reg" data-toggle="tab">Registration</a></li>

      </ul>
      <div class="tab-content"><!--login tab content-->
         <div id="pane_login" class="tab-pane active">
             <form id="login-form" target="login-signup-iframe" method="post" action="#" name="login-form">

              </form>

        </div><!--/pane_login-->

        <div id="pane_reg" class="tab-pane"><!--registration tab content-->
           <form id="regestration-form" target="login-signup-iframe" method="post" action="#" name="regestration-form">

            </form>
         </div>
        </div><!-- /.tab-content -->
</div><!-- /.tabbable -->
Run Code Online (Sandbox Code Playgroud)

我认为这可以通过jquery轻松完成.但我不知道该怎么做.所以,请任何人帮我解决我的问题.提前谢谢你?

Sri*_*r R 133

从.nav-tabs应用选择器似乎正在起作用

HTML

<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>
Run Code Online (Sandbox Code Playgroud)

脚本

$(document).ready(function(){
  activaTab('aaa');
});

function activaTab(tab){
  $('.nav-tabs a[href="#' + tab + '"]').tab('show');
};
Run Code Online (Sandbox Code Playgroud)

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

  • 选项卡窗格`id`是不必要的,修改`href`对我来说很奇怪.一个更清晰的解决方案是在每个标签上添加一个`id`:然后你可以将长选择器更改为简单的`$('#'+ tab).tab('show');` (3认同)
  • @Skippr如果删除选项卡窗格ID,每个nav-tabs锚点如何链接到其选项卡窗格? (2认同)

小智 11

HTML:

<a href="PageName.php#tabID">link to other page tab</a>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

window.onload = function(){  

    var url = document.location.toString();
    if (url.match('#')) {
        $('.nav-tabs a[href="#' + url.split('#')[1] + '"]').tab('show');
    }

    //Change hash for page-reload
    $('.nav-tabs a[href="#' + url.split('#')[1] + '"]').on('shown', function (e) {
        window.location.hash = e.target.hash;
    }); 
} 
Run Code Online (Sandbox Code Playgroud)

  • id 必须在引号之间:`$('.nav-tabs a[href="#' + url.split('#')[1] + '"]').tab('show');` (2认同)

Nik*_* K. 8

您也可以通过标签ID进行访问,但该ID对于同一页面是唯一的.这是一个相同的例子

$('#product_detail').tab('show');
Run Code Online (Sandbox Code Playgroud)

上面的例子#product_detailsnav tabid

  • 或者,如果您使用的是HREF`$('。nav-tabs a [href =“#home”]')。tab('show')` (2认同)

小智 6

嗨,试试这个人!

$('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');
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)