Twitter Bootstrapタブが機能しない:タブをクリックしても何も起こりません


81

次のコードでTwitterBootstrapタブを実装しようとしていますが、機能していないようです。タブは表示されますが、クリックしても何も起こりません。以下は私が使用している唯一のコードです。他のすべてのCSS / JSスクリプトは、TwitterBootstrapフレームワークからコピーされます。

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

3
追加data-toggleは私にとってもうまくいきました。これは、Bootstrap3にも当てはまります。これが実際の例を含むbootply
ericsoco

回答:


87

コードにタブプラグインを追加する必要があります

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

まあ、それはうまくいきませんでした。私はいくつかのテストを行い、次の場合に機能し始めました。

  1. jQueryスクリプトを<head>セクションに移動(1.7に更新)
  2. タブ要素のdata-toggle="tab"リンクとIDに追加<ul>
  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>

12
Bartekに感謝します。ただし、bootstrap.jsスクリプトにはbootstrap-tab.jsも含まれていると思います。私が間違っている場合は私を訂正してください。とにかく、bootstrap-tab.jsを追加しましたが、それでも機能しません。
DEREK N 2012

その通りですが、ブートストラップのカスタムビルドにも依存します:)...コメントの他の部分を削除しました。...あなたにしているエイリアスの名前空間に気付かなかった
BartekR

それも試してみました。動作しません。上記のHTMLコードは機能しますか?
DEREK N 2012

4
Barekに感謝します、うまくいきました!jQueryを1.7にアップグレードし、データを切り替えることで問題が解決しました。スクリプトタグも必要ありません。
DEREK N 2012

これは本当に役に立ちました-jqueryスクリプトを移動する必要はありませんでした私は他の3つのステップを実行しました
Rob

66

重要な要素は次のとおりです。

  1. class="nav nav-tabs"data-tabs="tabs"ul
  2. data-toggle="tab"href="#orange"a
  3. 内容のclass="tab-content"div
  4. class="tab-pane"そしてid項目のdiv要素の

完全なコードは次のとおりです。

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

タブがアクティブになったときに関数を呼び出してタブのコンテンツをロードしたい場合はどうすればよいですか?
sureshvv 2013

素晴らしい、このアドバイスは私を助けました。ありがとうございました!
NPC

これをAngularJSで使用している場合は、ulにid = "myTabs"を指定してから、次を追加します。$( '#myTabs a')。click(function(e){e.preventDefault(); $(this).tab( '公演'); });
ロビースミス

この回答では、タブを初期化するためにJavaScriptが必要ないという事実が気に入っています。これは私を助けました。ありがとう
誠実な2016

20

最近、次のブートストラップタブに問題が持っていた彼らのオンラインガイドラインを、エラーが彼らのマークアップの例では、現在ありますdata-tabs="tabs」に欠けている<ul>要素。それは使用せずにdata-toggleリンク上で作業をしません。



16

あなたは行方不明data-toggle="tab":あなたのタブのスイッチがどこにあるスクリプトが言うことができないので、あなたのメニューのURL上のデータタグを

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>

4

アンカータグに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>

ヘッドセクションhttp://code.jquery.com/jquery-1.7.1.js '>に以下を追加しました


1

ブートストラップのドキュメントのコードを次のように試しました。

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

そしてそれは動作します。しかし、これら2つ<script src...>の位置を切り替えると、機能しません。したがって、bootstrap.jsの前にjqueryスクリプトをロードすることを忘れないでください。


0

私にとっての問題は、bootstrap.min.cssが含まれていなかったことです(bootstrap-sensitive.min.cssのみが含まれていました)。


0

実際、それを行う別の簡単な方法があります。それは私にとってはうまくいきますが、皆さんにとってはよくわかりません。ここで重要なのは、それぞれ(タブペイン)に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を使用したGoogleChromeでのみ機能しました。追加後 data-toggle="tab"、タブはMozillaFirefoxとMSEdgeでも機能しました。
グリシャ2016

0

これは、他の例のどれもしなかったときにそれを解決しました:

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

0

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>

おかげで、これは私のために最終的に働いた唯一のものです。質問:うまく機能するのに、なぜこのファイルが元のブートストラップダウンロードに含まれていなかったのですか?ブートストラップが将来機能するために必要なすべてのものにアクセスできることを確認したいだけです。
user2223059 2015年

0

Bootstrap Javascript Modules全体をロードする代わりに作業しBootstrap Javascriptているのでload/include/node_modules/bootstrap/js/tab.jsファイルをロードするのを忘れたため、タブが機能しませんでした。

ここに画像の説明を入力してください

それを含めた後、それはうまくいきました...

幸運を


-8

bootstrap.jsヘッドセクションからボディの最後に追加するためのスクリプトタグをコピーするだけです。そうすれば、タブをアクティブにするスクリプトがなくても、すべてが正常に機能するはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.