文檔地址:https://v3.bootcss.com/javascript/#tabs
簡單實例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>tab切換</title> <link href="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <div> <!-- 導航 --> <ul class="nav nav-tabs" role="tablist"> <li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li> <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li> <li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li> <li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li> </ul> <!-- 對應內容 --> <!-- <div class="tab-content"> <div role="tabpanel" class="tab-pane active" id="home">...</div> <div role="tabpanel" class="tab-pane" id="profile">...</div> <div role="tabpanel" class="tab-pane" id="messages">...</div> <div role="tabpanel" class="tab-pane" id="settings">...</div> </div> --> <!-- 帶顯示效果的內容 --> <div class="tab-content"> <div role="tabpanel" class="tab-pane fade in active" id="home">1</div> <div role="tabpanel" class="tab-pane fade" id="profile">2</div> <div role="tabpanel" class="tab-pane fade" id="messages">3</div> <div role="tabpanel" class="tab-pane fade" id="settings">4</div> </div> </div> </body> </html>
上方每個導航中的a標簽的href屬性值應該和內容的id想對應 (其它的照搬即可)
原理解析:
當顯示一個新標簽時,事件按如下順序觸發:
hide.bs.tab
(老選項卡隱藏之前)show.bs.tab
(新選項卡顯示之前)hidden.bs.tab
(老選項卡隱藏之后)shown.bs.tab
(新選項卡顯示以后)
如果沒有標簽頁已經激活,那么隱藏。bs。taband hidden.bs。不會觸發tabevents。
事件類型 | 描述 |
---|---|
show.bs.tab | 此事件在顯示新選項卡之前觸發。使用event.targetandevent。relatedtargeto分別針對活動選項卡和前一個活動選項卡(如果可用)。 |
shown.bs.tab | 此事件在選項卡顯示后觸發選項卡顯示。使用event.targetandevent。relatedtargeto分別針對活動選項卡和前一個活動選項卡(如果可用)。 |
hide.bs.tab | 當要顯示新選項卡時(因此要隱藏先前的活動選項卡),此事件將觸發。Useevent。目標的事件。relatedtargeto分別針對當前活動選項卡和即將活動的新選項卡。 |
hidden.bs.tab | 此事件在顯示新選項卡之后觸發(因此前一個活動選項卡被隱藏)。Useevent。目標的事件。relatedtargeto分別針對前一個活動選項卡和新活動選項卡。 |
使用實例:
$('a[data-toggle="tab"]').on('hide.bs.tab', function (e) { // e.target // 新選項卡對象 // e.relatedTarget // 老選項卡對象 console.log("老選項卡隱藏之前"); }) $('a[data-toggle="tab"]').on('show.bs.tab', function (e) { // e.target // 新選項卡對象 // e.relatedTarget // 老選項卡對象 console.log("新選項卡顯示之前"); }) $('a[data-toggle="tab"]').on('hidden.bs.tab', function (e) { // e.target // 新選項卡對象 // e.relatedTarget // 老選項卡對象 console.log("老選項卡隱藏之后"); }) $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { console.log(e.target.nodeName);//獲取事件觸發元素標簽名(li,p,div,img,button…) console.log(e.target.id);//獲取事件觸發元素id console.log(e.target.className);//獲取事件觸發元素classname console.log(e.target.innerHTML);//獲取事件觸發元素的內容(li) console.log(e.relatedTarget) // 老選項卡對象 console.log("新選項卡顯示之后"); }) </script>
初始化時是不會執行上面的事件的