Вкладки Twitter Bootstrap не працюють: коли я натискаю на них, нічого не відбувається


81

Я намагаюся застосувати вкладки 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>

3
Додавання теж data-toggleпрацювало у мене; це вірно і для Bootstrap 3. Ось завантажувальний приклад з робочим прикладом: bootply.com/74927
ericsoco

Відповіді:


87

Вам потрібно додати плагін вкладок до свого коду

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

Ну, не вийшло. Я зробив кілька тестів, і він почав працювати, коли:

  1. перемістив (оновив до 1.7) скрипт jQuery до <head>розділу
  2. додано data-toggle="tab"до посилань та ідентифікатора для <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

Ви маєте рацію, але це також залежить від власної збірки bootstrap :) ... видалено іншу частину коментаря; не помітив, що ви псевдоніми простору імен ...
BartekR

Спробував і це; не працює. Чи працює вам наведений вище HTML-код?
DEREK N

4
Дякую Бареку, це спрацювало! Оновлення jQuery до версії 1.7 та перемикання даних вирішило проблему. Вам навіть не потрібен тег сценарію.
DEREK N

Дякую, це дійсно допомогло - мені не потрібно було переміщувати скрипт jquery, я просто виконав інші 3 кроки
Роб,

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

Чудово, ця порада мені допомогла. Дякую!
NPC

Якщо ви використовуєте це з AngularJS, дайте ul id = "myTabs", а потім додайте: $ ('# myTabs a'). Натисніть (функція (e) {e.preventDefault (); $ (this) .tab ( 'показати');});
Роббі Сміт

У цій відповіді мені подобається той факт, що для ініціалізації вкладки не потрібен JavaScript. Це мені допомогло. Подяка
Щиро

20

Виникла проблема з вкладками Bootstrap нещодавно, дотримуючись їхніх інструкцій в Інтернеті , але наразі в їх прикладі розмітки помилка 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>

і це працює. Але коли я переключаю позицію цих двох <script src...>, це не працює. Тому, не забудьте завантажити свій скрипт jquery перед bootstrap.js.


0

Для мене проблема полягала в тому, що я не включав bootstrap.min.css (я включав лише bootstrap-responsive.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клас, але вкладки працювали лише в Google Chrome із asnc bootstrap.min.js-file. Після додавання data-toggle="tab"вкладки працювали також на Mozilla Firefox та MS Edge.
Grischa

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

включіть bootsrap-tab.js безпосередньо під jquery

<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

0

Так як я працюю з Bootstrap Javascript Modulesзамість завантаження всього Bootstrap Javascript, мої вкладки не працюють , тому що я забув завантажити load/include/в node_modules/bootstrap/js/tab.jsфайл.

введіть тут опис зображення

Після включення це спрацювало ...

Щасти


-8

Просто скопіюйте тег сценарію для додавання розділу bootstrap.jsз заголовка в кінець тіла. Тоді все повинно працювати нормально навіть без сценаріїв для активації вкладок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.