如何从引导程序中的另一个页面激活动态选项卡?

Posted

技术标签:

【中文标题】如何从引导程序中的另一个页面激活动态选项卡?【英文标题】:How do I activate a dynamic tab from another page in bootstrap? 【发布时间】:2018-01-06 03:28:29 【问题描述】:

我正在开发一个网页,其中包含来自 Bootstrap 的动态选项卡。我在从外部页面链接选项卡内容时遇到问题。 我想从另一个页面的外部链接激活下面页面的菜单 1 和菜单 2 选项卡。尝试使用 href="index.html#menu1" 但它不起作用。

<!DOCTYPE html>
<html lang="en">
<head>
  <title>index</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <div class="row">
  <div class="col-sm-3">
  <ul class="nav nav-pills nav-stacked">
    <li class="active"><a data-toggle="pill" href="#menu1">Menu 1</a></li>
    <li><a data-toggle="pill" href="#menu2">Menu 2</a></li>
  </ul>
  </div>
  <div class="col-sm-9">
  <div class="tab-content">
    <div id="menu1" class="tab-pane fade in active">
      <h3>Menu 1</h3>
      <p>Menu 1 activated.</p>
    </div>
    <div id="menu2" class="tab-pane fade">
      <h3>Menu 2</h3>
      <p>Menu 2 Activated </p>
    </div>
  </div>
</div>
</div>
</body>
</html>

【问题讨论】:

【参考方案1】:

感谢this answer about query string 和this answer about to show Bootstrap's tab,将以下脚本添加到您的页面并使用查询字符串在其他页面上生成链接!

function getQuery(url) 
  var query = ,
      href = url || window.location.href;
  href.replace(/[?&](.+?)=([^&#]*)/g, function (_, key, value) 
      query[key] = decodeURI(value).replace(/\+/g, ' ');
  );
  return query;


function getParam(name)
    var obj = getQuery();
    return obj[name];


$(document).ready(function() 
  var target = getParam('target');
  $('.nav a[href="#'+target+'"]').tab('show');
);
<!DOCTYPE html>
<html lang="en">
<head>
  <title>index</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <div class="row">
  <div class="col-sm-3">
  <ul class="nav nav-pills nav-stacked">
    <li class="active"><a data-toggle="pill" href="#menu1">Menu 1</a></li>
    <li><a data-toggle="pill" href="#menu2">Menu 2</a></li>
  </ul>
  </div>
  <div class="col-sm-9">
  <div class="tab-content">
    <div id="menu1" class="tab-pane fade in active">
      <h3>Menu 1</h3>
      <p>Menu 1 activated.</p>
    </div>
    <div id="menu2" class="tab-pane fade">
      <h3>Menu 2</h3>
      <p>Menu 2 Activated </p>
    </div>
  </div>
</div>
<div class="row">
use the following script and 
the link on the other pages should be like this: url?target=menu2 
without "#" 
</div>
</div>
</body>
</html>

【讨论】:

以上是关于如何从引导程序中的另一个页面激活动态选项卡?的主要内容,如果未能解决你的问题,请参考以下文章

未激活的引导选项卡中的 Google-Maps-for-Rails

如何使用 Tab 键激活引导选项卡内容

部分中的引导选项卡

仅刷新包含 iframe 的引导程序中的当前导航选项卡

Buildfire - 有没有办法将人们引导到管理仪表板中的另一个选项卡?

动态生成时无法使引导选项卡工作