【问题标题】:Twitter Bootstrap tabs not working: when I click on them nothing happensTwitter Bootstrap 选项卡不起作用:当我单击它们时,没有任何反应
【发布时间】:2012-03-26 16:47:22
【问题描述】:

我正在尝试在以下代码中实现 Twitter Bootstrap 选项卡,但它似乎不起作用。选项卡会显示出来,但是当我单击它们时,什么也没有发生。以下是我正在使用的唯一代码。所有其他 CSS/JS 脚本都是从 Twitter Bootstrap 框架复制而来的。

<!DOCTYPE html>
<html lang="en">
<head>
<!-- Le styles -->
<link href="assets/twitterbootstrap/css/bootstrap.css" rel="stylesheet">
<link href="assets/twitterbootstrap/css/bootstrap-responsive.css" rel="stylesheet">

</head>

<body data-spy="scroll" data-target=".subnav" data-offset="50">

<div class="container">

<!-------->
<div id="content">
    <ul class="nav nav-tabs" data-tabs="tabs">
        <li class="active"><a href="#red">Red</a></li>
        <li><a href="#orange">Orange</a></li>
        <li><a href="#yellow">Yellow</a></li>
        <li><a href="#green">Green</a></li>
        <li><a href="#blue">Blue</a></li>
    </ul>
    <div id="my-tab-content" class="tab-content">
        <div class="tab-pane active" id="red">
            <h1>Red</h1>
            <p>red red red red red red</p>
        </div>
        <div class="tab-pane" id="orange">
            <h1>Orange</h1>
            <p>orange orange orange orange orange</p>
        </div>
        <div class="tab-pane" id="yellow">
            <h1>Yellow</h1>
            <p>yellow yellow yellow yellow yellow</p>
        </div>
        <div class="tab-pane" id="green">
            <h1>Green</h1>
            <p>green green green green green</p>
        </div>
        <div class="tab-pane" id="blue">
            <h1>Blue</h1>
            <p>blue blue blue blue blue</p>
        </div>
    </div>
</div>

<script type="text/javascript">
    jQuery(document).ready(function ($) {
        $(".tabs").tabs();
    });
</script>    
</div> <!-- container -->

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.js"></script>
<script type="text/javascript" src="assets/twitterbootstrap/js/bootstrap.js"></script>
</body>
</html>

【问题讨论】:

  • 添加data-toggle 也对我有用; Bootstrap 3 也是如此。这是一个带有工作示例的引导程序:bootply.com/74927

标签: html twitter-bootstrap


【解决方案1】:

您需要在代码中添加标签插件

<script type="text/javascript" src="assets/twitterbootstrap/js/bootstrap-tab.js"></script>

好吧,它没有用。我做了一些测试,它在以下时间开始工作:

  1. 已将 jQuery 脚本移至(更新至 1.7)&lt;head&gt; 部分
  2. data-toggle="tab" 添加到&lt;ul&gt; 选项卡元素的链接和ID
  3. $(".tabs").tabs(); 更改为$("#tabs").tab();
  4. 以及其他一些无关紧要的事情

这是代码

<!DOCTYPE html>
<html lang="en">
<head>
<!-- Le styles -->
<link href="../bootstrap/css/bootstrap.css" rel="stylesheet">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
</head>

<body>

<div class="container">

<!-------->
<div id="content">
    <ul id="tabs" class="nav nav-tabs" data-tabs="tabs">
        <li class="active"><a href="#red" data-toggle="tab">Red</a></li>
        <li><a href="#orange" data-toggle="tab">Orange</a></li>
        <li><a href="#yellow" data-toggle="tab">Yellow</a></li>
        <li><a href="#green" data-toggle="tab">Green</a></li>
        <li><a href="#blue" data-toggle="tab">Blue</a></li>
    </ul>
    <div id="my-tab-content" class="tab-content">
        <div class="tab-pane active" id="red">
            <h1>Red</h1>
            <p>red red red red red red</p>
        </div>
        <div class="tab-pane" id="orange">
            <h1>Orange</h1>
            <p>orange orange orange orange orange</p>
        </div>
        <div class="tab-pane" id="yellow">
            <h1>Yellow</h1>
            <p>yellow yellow yellow yellow yellow</p>
        </div>
        <div class="tab-pane" id="green">
            <h1>Green</h1>
            <p>green green green green green</p>
        </div>
        <div class="tab-pane" id="blue">
            <h1>Blue</h1>
            <p>blue blue blue blue blue</p>
        </div>
    </div>
</div>


<script type="text/javascript">
    jQuery(document).ready(function ($) {
        $('#tabs').tab();
    });
</script>    
</div> <!-- container -->


<script type="text/javascript" src="../bootstrap/js/bootstrap.js"></script>

</body>
</html>

【讨论】:

  • 感谢 Bartek;但是,我认为 bootstrap.js 脚本也包含 bootstrap-tab.js。如果我错了,请纠正我。反正我确实加了bootstrap-tab.js,还是不行。
  • 你是对的,但这也取决于引导程序的自定义构建:) ...删除了评论的其他部分;没有注意到您正在给命名空间起别名...
  • 也试过了;不起作用。上面的 HTML 代码对你有用吗?
  • 感谢 Barek,它成功了!将 jQuery 升级到 1.7 和 data-toggle 解决了这个问题。你甚至不需要脚本标签。
  • 感谢这真的有帮助 - 我不需要移动 jquery 脚本,我只是按照其他 3 个步骤进行操作
【解决方案2】:

您的菜单 URL 上缺少 data-toggle="tab" 数据标签,因此您的脚本无法判断您的选项卡开关在哪里:

HTML

<ul class="nav nav-tabs" data-tabs="tabs">
    <li class="active"><a data-toggle="tab" href="#red">Red</a></li>
    <li><a data-toggle="tab" href="#orange">Orange</a></li>
    <li><a data-toggle="tab" href="#yellow">Yellow</a></li>
    <li><a data-toggle="tab" href="#green">Green</a></li>
    <li><a data-toggle="tab" href="#blue">Blue</a></li>
</ul>

【讨论】:

    【解决方案3】:

    只需复制用于将bootstrap.js 从头部部分添加到正文末尾的脚本标记。然后,即使没有脚本来激活选项卡,一切都应该可以正常工作。

    【讨论】:

      【解决方案4】:

      最近在their online guidelines 之后出现了 Bootstrap 选项卡的问题,但目前在其标记示例中出现错误 data-tabs="tabs" 在 &lt;ul&gt; 元素上丢失。没有它,在链接上使用 data-toggle 将不起作用。

      【讨论】:

        【解决方案5】:

        我有同样的问题,但上面的一些答案对我来说可能很棘手。

        我找到了另一个答案也许可以解决您的问题Twitter Bootstrap Js (tabs, popups, dropdown) not working in Drupal

        jquery.js 放在 bootstrap.tab.js

        之前

        【讨论】:

          【解决方案6】:

          关键要素包括:

          1. ulclass="nav nav-tabs"data-tabs="tabs"
          2. adata-toggle="tab"href="#orange"
          3. 内容的divclass="tab-content"
          4. 项目的div的class="tab-pane"id

          完整代码如下:

          <ul class="nav nav-tabs" data-tabs="tabs">
              <li class="active"><a data-toggle="tab" href="#red">Red</a></li>
              <li><a data-toggle="tab" href="#orange">Orange</a></li>
              <li><a data-toggle="tab" href="#yellow">Yellow</a></li>
              <li><a data-toggle="tab" href="#green">Green</a></li>
              <li><a data-toggle="tab" href="#blue">Blue</a></li>
          </ul>
          <div class="tab-content">
              <div class="tab-pane active" id="red">
                  <h1>Red</h1>
                  <p>red red red red red red</p>
              </div>
              <div class="tab-pane" id="orange">
                  <h1>Orange</h1>
                  <p>orange orange orange orange orange</p>
              </div>
              <div class="tab-pane" id="yellow">
                  <h1>Yellow</h1>
                  <p>yellow yellow yellow yellow yellow</p>
              </div>
              <div class="tab-pane" id="green">
                  <h1>Green</h1>
                  <p>green green green green green</p>
              </div>
              <div class="tab-pane" id="blue">
                  <h1>Blue</h1>
                  <p>blue blue blue blue blue</p>
              </div>
          </div>
          

          【讨论】:

          • 如果我想在标签变为活动状态时调用一个函数来加载标签的内容?
          • 太好了,这个建议对我有帮助。谢谢!
          • 如果你在 AngularJS 中使用它,给 ul 一个 id="myTabs",然后添加:$('#myTabs a').click(function (e) { e.preventDefault() ; $(this).tab('show'); });
          • 在这个答案中,我喜欢不需要 javascript 来初始化选项卡的事实。这对我有帮助。谢谢
          【解决方案7】:

          对我来说,问题在于我没有包含 bootstrap.min.css(我只包含 bootstrap-responsive.min.css)。

          【讨论】:

            【解决方案8】:

            我刚刚通过在锚标记中添加 data-toggle="tab" 元素解决了这个问题

            <div class="container">
            
            <!-------->
              <div id="content">
            
               <ul class="nav nav-tabs">
            <li class="active"><a data-toggle="tab" href="#red">Red</a></li>
            <li><a data-toggle="tab"  href="#orange">Orange</a></li>
            <li><a data-toggle="tab" href="#yellow">Yellow</a></li>
            <li><a data-toggle="tab" href="#green">Green</a></li>
            <li><a data-toggle="tab" href="#blue">Blue</a></li>
            </ul>
            <div class="tab-content">
            <div class="tab-pane active" id="red">
                <h1>Red</h1>
                <p>red red red red red red</p>
            </div>
            <div class="tab-pane" id="orange">
                <h1>Orange</h1>
                <p>orange orange orange orange orange</p>
            </div>
            <div class="tab-pane" id="yellow">
                <h1>Yellow</h1>
                <p>yellow yellow yellow yellow yellow</p>
            </div>
            <div class="tab-pane" id="green">
                <h1>Green</h1>
                <p>green green green green green</p>
            </div>
            <div class="tab-pane" id="blue">
                <h1>Blue</h1>
                <p>blue blue blue blue blue</p>
            

            和 在 head 部分添加了以下内容 http://code.jquery.com/jquery-1.7.1.js'>

            【讨论】:

              【解决方案9】:

              我尝试了 bootstrap 文档中的代码如下:

              <!doctype html>
              <html lang="en">
              <head>
                <meta charset="utf-8">
                <title>tab demo</title>
                <link rel="stylesheet" href="bootstrap.css">
              </head>
              <body>
              <div class="span9">
                  <div class="tabbable"> <!-- Only required for left/right tabs -->
                    <ul class="nav nav-tabs">
                      <li class="active"><a href="#tab1" data-toggle="tab">Section 1</a></li>
                      <li><a href="#tab2" data-toggle="tab">Section 2</a></li>
                    </ul>
                    <div class="tab-content">
                      <div class="tab-pane active" id="tab1">
                        <p>I'm in Section 1.</p>
                      </div>
                      <div class="tab-pane" id="tab2">
                        <p>Howdy, I'm in Section 2.</p>
                      </div>
                    </div>
                  </div>
              </div> 
              <script src="jquery.min.js"></script>
              <script src="bootstrap.js"></script>
              </body>
              </html>
              

              它有效。 但是当我切换这两个&lt;script src...&gt; 的位置时,它不起作用。所以请记得在 bootstrap.js 之前加载你的 jquery 脚本。

              【讨论】:

                【解决方案10】:

                实际上,还有另一种简单的方法可以做到这一点。它对我有用,但我不确定你们。 这里的关键是,只需在每个(选项卡窗格)中添加 FADE,它就会起作用。此外,您甚至不需要编写函数脚本或任何版本的 jQuery。 这是我的代码...希望它对大家有用。

                <div class="tab-pane fade" id="Customer">
                    <table class="table table-hover table-bordered">
                        <tr>
                            <th width="40%">Contact Person</th>
                            <td><?php echo $event['Event']['e_contact_person']; ?></td>
                        </tr>
                    </table>
                </div>
                <div class="tab-pane fade" id="Delivery">
                    <table class="table table-hover table-bordered">
                        <tr>
                            <th width="40%">Time Arrive Warehouse Start</th>
                            <td><?php echo $event['Event']['e_time_arrive_WH_start']; ?></td>
                        </tr>
                    </table>
                </div>
                

                【讨论】:

                • 我已经包含了fade 类,但是这些标签只能在带有asnc bootstrap.min.js-file 的谷歌浏览器中使用。添加 data-toggle="tab" 后,这些选项卡也可以在 Mozilla Firefox 和 MS Edge 上运行。
                【解决方案11】:

                当其他示例都没有时,这解决了它:

                $('#myTab a').click(function (e) {
                  e.preventDefault();
                  $(this).tab('show');
                });
                

                【讨论】:

                  【解决方案12】:

                  在我下载 bootstrap-tab.js 并将其包含在我的脚本中之前,我遇到了同样的问题,从这里下载 https://code.google.com/p/fusionleaf/source/browse/webroot/fusionleaf/com/www/inc/bootstrap/js/bootstrap-tab.js?r=82aacd63ee1f7f9a15ead3574fe2c3f45b5c1027

                  在 jquery 正下方包含 bootsrap-tab.js

                  <script type="text/javascript" src="bootstrap/js/bootstrap-tab.js"></script>
                  

                  最终代码如下所示:

                   <!DOCTYPE html>
                  <html lang="en">
                  <head>
                  <link href="bootstrap/css/bootstrap.css" rel="stylesheet">
                  <script type="text/javascript" src="libraries/jquery.js"></script>
                  <script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
                  <script type="text/javascript" src="bootstrap/js/bootstrap-tab.js"></script>
                  </head>
                  
                  <body>
                  
                  <div class="container">
                  
                  <!-------->
                  <div id="content">
                      <ul id="tabs" class="nav nav-tabs" data-tabs="tabs">
                          <li class="active"><a href="#red" data-toggle="tab">Red</a></li>
                          <li><a href="#orange" data-toggle="tab">Orange</a></li>
                          <li><a href="#yellow" data-toggle="tab">Yellow</a></li>
                          <li><a href="#green" data-toggle="tab">Green</a></li>
                          <li><a href="#blue" data-toggle="tab">Blue</a></li>
                      </ul>
                      <div id="my-tab-content" class="tab-content">
                          <div class="tab-pane active" id="red">
                              <h1>Red</h1>
                              <p>red red red red red red</p>
                          </div>
                          <div class="tab-pane" id="orange">
                              <h1>Orange</h1>
                              <p>orange orange orange orange orange</p>
                          </div>
                          <div class="tab-pane" id="yellow">
                              <h1>Yellow</h1>
                              <p>yellow yellow yellow yellow yellow</p>
                          </div>
                          <div class="tab-pane" id="green">
                              <h1>Green</h1>
                              <p>green green green green green</p>
                          </div>
                          <div class="tab-pane" id="blue">
                              <h1>Blue</h1>
                              <p>blue blue blue blue blue</p>
                          </div>
                      </div>
                  </div>
                  
                  
                  <script type="text/javascript">
                      jQuery(document).ready(function ($) {
                          $('#tabs').tab();
                      });
                  </script>    
                  </div> <!-- container -->
                  
                  
                  <script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
                  
                  </body>
                  </html>
                  

                  【讨论】:

                  • 谢谢,这是唯一对我有用的东西。问题:为什么这个文件没有包含在原始引导下载中,如果它运行良好?我只是想确保我可以访问引导程序在未来工作所需的一切。
                  【解决方案13】:

                  由于我正在使用 Bootstrap Javascript Modules 而不是加载整个 Bootstrap Javascript,因此我的标签无法正常工作,因为我忘记加载 load/include/ node_modules/bootstrap/js/tab.js 文件。

                  包含它之后,它起作用了......

                  祝你好运

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多