Các tab Twitter Bootstrap không hoạt động: khi tôi nhấp vào chúng, không có gì xảy ra


81

Tôi đang cố gắng triển khai các tab Twitter Bootstrap trong đoạn mã sau, nhưng nó dường như không hoạt động. Các tab được hiển thị, nhưng khi tôi nhấp vào chúng thì không có gì xảy ra. Dưới đây là mã duy nhất tôi đang sử dụng. Tất cả các tập lệnh CSS / JS khác được sao chép từ khuôn khổ 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
Thêm cũng data-togglelàm việc cho tôi; điều này cũng đúng với Bootstrap 3. Dưới đây là một bootply với một ví dụ làm việc: bootply.com/74927
ericsoco

Câu trả lời:


87

Bạn cần thêm plugin tab vào mã của mình

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

Chà, nó không hoạt động. Tôi đã thực hiện một số thử nghiệm và nó bắt đầu hoạt động khi:

  1. đã chuyển (cập nhật lên 1.7) tập lệnh jQuery sang <head>phần
  2. được thêm data-toggle="tab"vào liên kết và id cho <ul>phần tử tab
  3. đổi $(".tabs").tabs();thành$("#tabs").tab();
  4. và một số thứ khác không quan trọng

Đây là mã

<!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
Cảm ơn Bartek; tuy nhiên, tôi nghĩ rằng tập lệnh bootstrap.js cũng chứa bootstrap-tab.js. Xin vui lòng sửa cho tôi nếu tôi sai. Dù sao, tôi đã thêm bootstrap-tab.js, và nó vẫn không hoạt động.
DEREK N

Bạn nói đúng, nhưng nó cũng phụ thuộc vào xây dựng tùy chỉnh của bootstrap :) ... đã loại bỏ phần khác của bình luận; không nhận thấy bạn không gian tên bí danh ...
BartekR

Đã thử điều đó là tốt; không hoạt động. Đoạn mã HTML trên có phù hợp với bạn không?
DEREK N

4
Cảm ơn Barek, nó đã hoạt động! Nâng cấp jQuery lên 1.7 và tính năng chuyển đổi dữ liệu đã giải quyết được vấn đề. Bạn thậm chí không cần thẻ script.
DEREK N

Cảm ơn điều này thực sự hữu ích - tôi không cần phải di chuyển tập lệnh jquery mà chỉ làm theo 3 bước còn lại
Rob

66

Các yếu tố chính bao gồm:

  1. cái class="nav nav-tabs"data-tabs="tabs"củaul
  2. các data-toggle="tab"href="#orange"củaa
  3. các class="tab-content"của divnội dung
  4. các class="tab-pane"idcủa div của các mục

Mã hoàn chỉnh như sau:

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

Điều gì sẽ xảy ra nếu tôi muốn gọi một hàm khi một tab hoạt động để tải nội dung của tab?
sureshvv

Tuyệt vời, lời khuyên này đã giúp tôi. Cảm ơn bạn!
NPC

Nếu bạn đang sử dụng cái này với AngularJS, hãy cung cấp cho ul một id = "myTabs", sau đó thêm: $ ('# myTabs a'). Click (function (e) {e.preventDefault (); $ (this) .tab ( 'chỉ'); });
Robbie Smith,

Trong câu trả lời này, tôi thích thực tế là không cần javascript để khởi tạo tab. Điều này đã giúp tôi. Cảm ơn
Chân thành

20

Gần đây đã gặp sự cố với các tab Bootstrap theo nguyên tắc trực tuyến của họ , nhưng hiện tại có lỗi trong ví dụ đánh dấu của họ data-tabs="tabs"thiếu <ul>phần tử. Nếu không có nó, việc sử dụng data-toggletrên các liên kết không hoạt động.



16

Bạn đang thiếu data-toggle="tab"thẻ dữ liệu trên url menu của mình, do đó, các tập lệnh của bạn không thể cho biết vị trí chuyển đổi tab của bạn:

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

Tôi vừa khắc phục sự cố này bằng cách thêm phần tử data-toggle = "tab" vào thẻ liên kết

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

và thêm phần sau vào phần đầu http://code.jquery.com/jquery-1.7.1.js '>


1

Tôi đã thử các mã từ tài liệu của bootstrap như sau:

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

Và nó hoạt động. Nhưng khi tôi chuyển đổi <script src...>vị trí của hai vị trí này, nó không hoạt động. Vì vậy, hãy nhớ tải tập lệnh jquery của bạn trước bootstrap.js.


0

Đối với tôi, vấn đề là tôi đã không bao gồm bootstrap.min.css (tôi chỉ bao gồm bootstrap-responsive.min.css).


0

Trên thực tế, có một cách dễ dàng khác để làm điều đó. Nó hiệu quả với tôi nhưng tôi không chắc với các bạn. Điều quan trọng ở đây, chỉ là thêm FADE trong mỗi (bảng tab) và nó sẽ hoạt động. Bên cạnh đó, bạn thậm chí không cần phải viết hàm script hoặc bất kỳ phiên bản jQuery nào. Đây là mã của tôi ... hy vọng nó sẽ phù hợp với tất cả các bạn.

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

Tôi đã bao gồm fadelớp học, nhưng các tab chỉ hoạt động trong Google Chrome với asnc bootstrap.min.js-tệp. Sau khi được thêm, data-toggle="tab"các tab cũng hoạt động trên Mozilla Firefox và MS Edge.
Grischa

0

Điều này đã giải quyết nó khi không có ví dụ nào khác làm được:

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

0

tôi đã gặp vấn đề tương tự cho đến khi tôi tải xuống bootstrap-tab.js và đưa nó vào tập lệnh của mình, tải xuống từ đây https://code.google.com/p/fusionleaf/source/browse/webroot/fusionleaf/com/www/inc /bootstrap/js/bootstrap-tab.js?r=82aacd63ee1f7f9a15ead3574fe2c3f45b5c1027

bao gồm bootsrap-tab.js ngay bên dưới jquery

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

Mã cuối cùng trông như thế này:

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

Cảm ơn, đây là điều duy nhất cuối cùng đã làm việc cho tôi. Câu hỏi: tại sao tệp này không được bao gồm trong bản tải xuống bootstrap ban đầu nếu nó hoạt động rất tốt? Tôi chỉ muốn đảm bảo rằng tôi có quyền truy cập vào tất cả những gì tôi cần để bootstrap hoạt động trong tương lai.
dùng2223059

0

Kể từ khi tôi đang làm việc với Bootstrap Javascript Modulesthay vì tải toàn bộ Bootstrap Javascript, các tab của tôi đã không làm việc vì tôi quên để tải load/include/các node_modules/bootstrap/js/tab.jstập tin.

nhập mô tả hình ảnh ở đây

Sau khi bao gồm nó, nó đã hoạt động ...

Chúc may mắn


-8

Chỉ cần sao chép thẻ script để thêm bootstrap.jstừ phần đầu đến phần cuối của phần nội dung. Sau đó, mọi thứ sẽ hoạt động tốt ngay cả khi không có tập lệnh để kích hoạt các tab.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.