链接到特定选项卡 Bootstrap

Posted

技术标签:

【中文标题】链接到特定选项卡 Bootstrap【英文标题】:Link to specific tab Bootstrap 【发布时间】:2014-12-08 17:42:11 【问题描述】:

我正在使用 Django 框架开发一个网站,并且我正在尝试创建一种方法,当用户访问像 http://www.example.com/site/#users_rating 这样的链接时,它会在页面中打开一个特定的选项卡。

我尝试了以下在 Internet 上找到的代码(我是 javascript/JQuery 的新手),但它不起作用:

<script type="text/javascript">
    $(function() 
      // Javascript to enable link to tab
      var url = document.location.toString();
      if (url.match('#')) 
        $('.nav-tabs a[href=#'+url.split('#')[1]+']').tab('show') ;
      

      // Change hash for page-reload
      $('a[data-toggle="tab"]').on('show.bs.tab', function (e) 
        window.location.hash = e.target.hash;
      );
    );
</script>

我的模板使用 BootStrap 3,这里是 html 代码(带有一些 Django 标签):

<div class="col-md-12" style="margin: 0 auto;">
        <section class="panel">
            <header class="panel-heading tab-bg-dark-navy-blue">
                <ul class="nav nav-tabs nav-justified ">
                    <li class="active">
                        <a data-toggle="tab" href="#overview">
                            % trans "Overview" %
                        </a>
                    </li>
                    <li class="">
                        <a data-toggle="tab" href="#timeline">
                            % trans "Timeline" %
                        </a>
                    </li>
                    <li class="">
                        <a data-toggle="tab" href="#users_rating">
                            % trans "Users Ratings" % ( ptc.userrating.count )
                        </a>
                    </li>
                    <li class="">
                        <a data-toggle="tab" href="#rating">
                            % trans "Our Rating" %
                        </a>
                    </li>
                </ul>
            </header>
            <div class="panel-body">
                <div class="tab-content tasi-tab">


                    <!-- Overview Tab-Pane -->
                    <div id="overview" class="tab-pane active">
                        % include 'overview.html' %
                    </div>

                    <!-- Timeline Tab-Pane -->

                    <div id="timeline" class="tab-pane">
                        % include 'timeline.html' %
                    </div>

                    <!-- User Rating Tab-Pane -->

                    <div id="users_rating" class="tab-pane">
                        % include 'users_rating.html' %
                    </div>

                    <!-- Our Rating Tab-Pane -->

                    <div id="rating" class="tab-pane">
                        % include 'rating.html' %
                    </div>


                </div>
            </div>

        </section>
    </div>

如何根据我网站中的 URL 打开特定标签页?

【问题讨论】:

【参考方案1】:

以下代码对我有用

HTML

<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery.min.js"></script>
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" type="text/css" />
  <script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
  <script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
<div class="col-md-12" style="margin: 0 auto;">
        <section class="panel">
            <header class="panel-heading tab-bg-dark-navy-blue">
                <ul class="nav nav-tabs nav-justified ">
                    <li class="active">
                        <a data-toggle="tab" href="#overview">
                            % trans "Overview" %
                        </a>
                    </li>
                    <li class="">
                        <a data-toggle="tab" href="#timeline">
                            % trans "Timeline" %
                        </a>
                    </li>
                    <li class="">
                        <a data-toggle="tab" href="#users_rating">
                            % trans "Users Ratings" % ( ptc.userrating.count )
                        </a>
                    </li>
                    <li class="">
                        <a data-toggle="tab" href="#rating">
                            % trans "Our Rating" %
                        </a>
                    </li>
                </ul>
            </header>
            <div class="panel-body">
                <div class="tab-content tasi-tab">


                    <!-- Overview Tab-Pane -->
                    <div id="overview" class="tab-pane active">
                        % include 'overview.html' %
                    </div>

                    <!-- Timeline Tab-Pane -->

                    <div id="timeline" class="tab-pane">
                        % include 'timeline.html' %
                    </div>

                    <!-- User Rating Tab-Pane -->

                    <div id="users_rating" class="tab-pane">
                        % include 'users_rating.html' %
                    </div>

                    <!-- Our Rating Tab-Pane -->

                    <div id="rating" class="tab-pane">
                        % include 'rating.html' %
                    </div>
                </div>
            </div>

        </section>
    </div>
</body>
</html>

JS

    <script type="text/javascript">
        $(function() 
          // Javascript to enable link to tab
          var hash = document.location.hash;
          if (hash) 
            console.log(hash);
            $('.nav-tabs a[href='+hash+']').tab('show');
          

          // Change hash for page-reload
          $('a[data-toggle="tab"]').on('show.bs.tab', function (e) 
            window.location.hash = e.target.hash;
          );
        );
    </script>

【讨论】:

您的解决方案有效,谢谢。之后我发现我的解决方案也可以,问题是我忘记把&lt;script src="//code.jquery.com/jquery.min.js"&gt;&lt;/script&gt;放在我的模板的头部,所以当我把它放上时,问题就解决了。 这对我来说效果很好,除了我必须修改引用以在显示选项卡的行上的哈希值周围嵌入双引号:$('.nav-tabs a[href="'+hash+'"]').tab('show');【参考方案2】:

非常感谢。使用较新版本的 JQuery (mine=3.3.1) 你需要做一些改动:

<script>
     $(function() 
       // Javascript to enable link to tab
       var hash = document.location.hash;
       if (hash) 
         console.log(hash);
         $('.nav-tabs a[href=\\'+hash+']').tab('show');
       

       // Change hash for page-reload
       $('a[data-toggle="tab"]').on('show.bs.tab', function (e) 
         window.location.hash = e.target.hash;
       );
     );
 </script>

希望这可以节省我失去的时间

【讨论】:

以上是关于链接到特定选项卡 Bootstrap的主要内容,如果未能解决你的问题,请参考以下文章

链接到特定选项卡 Bootstrap

转到不同页面链接上的特定选项卡单击并切换活动类

如何在 Vuejs 中制作选项卡菜单特定链接

p:tabView:直接链接到选项卡

iOS - 如何将选项卡与情节提要中的特定视图控制器链接?

在特定选项卡中打开链接 - 来自电子邮件