Bootstrap JS 选项卡中的定时选项卡切换
Timed tab switching in Bootstrap JS Tabs
我想要JS Tabs会根据预设时间切换,得到如下代码:
<script>
var n=0
var myVar=setInterval(function () {update_news()}, 1000);
function update_news() {
n = n+1
if (n==4) {
n=1
}
$('.nav-tabs a[href="#menu'+n+'"]').tab('show')
}
</script>
正文:
<div class="container">
<ul class="nav nav-tabs">
<li class="active"><a href="#home">Home</a></li>
<li><a href="#menu1">Menu 1</a></li>
<li><a href="#menu2">Menu 2</a></li>
<li><a href="#menu3">Menu 3</a></li>
</ul>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h3>HOME</h3>
</div>
<div id="menu1" class="tab-pane fade">
<h3>Menu 1</h3>
</div>
<div id="menu2" class="tab-pane fade">
<h3>Menu 2</h3>
</div>
<div id="menu3" class="tab-pane fade">
<h3>Menu 3</h3>
</div>
</div>
</div>
但是,由于我不再使用 link 来切换标签页,有没有什么方法可以在没有 <a href="#menu">
标签的情况下进行切换?我可以把它隐藏起来,但我觉得这个解决方案不是很优雅。
编辑:
我实际上从 link 中删除了 data-toggle="tab"
属性,单击时它不会再切换选项卡 - 但仍然可以使用计时器。
这让我觉得标签切换与 link 并没有真正相关,而只是与列表中 <ul class="nav nav-tabs">
标签下的 <a href>
标签的存在有关.
您可以通过更改 location.hash
直接在 JavaScript 中设置 #menu1
。这样你就不需要 <a>
标签来改变它。因此,例如将其放在按钮上:
<button id="btn1">To Menu1</button>
JavaScript 将是:
document.getElementById("btn").onclick = function(){
location.hash = "#menu1";
}
我已经完全删除了您的 ul
,并且为您的每个 .tab-pane
元素添加了 data-target
属性。
<div id="menu1" data-target='#menu1' class="tab-pane fade">
<h3>Menu 1</h3>
</div>
然后,我将您的代码更改为:
$('#menu'+n).tab('show');
看看下面的片段:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<div class="container">
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h3>HOME</h3>
</div>
<div id="menu1" data-target='#menu1' class="tab-pane fade">
<h3>Menu 1</h3>
</div>
<div id="menu2" data-target='#menu2' class="tab-pane fade">
<h3>Menu 2</h3>
</div>
<div id="menu3" data-target='#menu3' class="tab-pane fade">
<h3>Menu 3</h3>
</div>
</div>
</div>
<script>
var n = 0;
var myVar = setInterval(update_news, 1000);
function update_news() {
n++;
if (n === 4) n = 1;
$('#menu'+n).tab('show')
}
</script>
我想要JS Tabs会根据预设时间切换,得到如下代码:
<script>
var n=0
var myVar=setInterval(function () {update_news()}, 1000);
function update_news() {
n = n+1
if (n==4) {
n=1
}
$('.nav-tabs a[href="#menu'+n+'"]').tab('show')
}
</script>
正文:
<div class="container">
<ul class="nav nav-tabs">
<li class="active"><a href="#home">Home</a></li>
<li><a href="#menu1">Menu 1</a></li>
<li><a href="#menu2">Menu 2</a></li>
<li><a href="#menu3">Menu 3</a></li>
</ul>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h3>HOME</h3>
</div>
<div id="menu1" class="tab-pane fade">
<h3>Menu 1</h3>
</div>
<div id="menu2" class="tab-pane fade">
<h3>Menu 2</h3>
</div>
<div id="menu3" class="tab-pane fade">
<h3>Menu 3</h3>
</div>
</div>
</div>
但是,由于我不再使用 link 来切换标签页,有没有什么方法可以在没有 <a href="#menu">
标签的情况下进行切换?我可以把它隐藏起来,但我觉得这个解决方案不是很优雅。
编辑:
我实际上从 link 中删除了 data-toggle="tab"
属性,单击时它不会再切换选项卡 - 但仍然可以使用计时器。
这让我觉得标签切换与 link 并没有真正相关,而只是与列表中 <ul class="nav nav-tabs">
标签下的 <a href>
标签的存在有关.
您可以通过更改 location.hash
直接在 JavaScript 中设置 #menu1
。这样你就不需要 <a>
标签来改变它。因此,例如将其放在按钮上:
<button id="btn1">To Menu1</button>
JavaScript 将是:
document.getElementById("btn").onclick = function(){
location.hash = "#menu1";
}
我已经完全删除了您的 ul
,并且为您的每个 .tab-pane
元素添加了 data-target
属性。
<div id="menu1" data-target='#menu1' class="tab-pane fade">
<h3>Menu 1</h3>
</div>
然后,我将您的代码更改为:
$('#menu'+n).tab('show');
看看下面的片段:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<div class="container">
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h3>HOME</h3>
</div>
<div id="menu1" data-target='#menu1' class="tab-pane fade">
<h3>Menu 1</h3>
</div>
<div id="menu2" data-target='#menu2' class="tab-pane fade">
<h3>Menu 2</h3>
</div>
<div id="menu3" data-target='#menu3' class="tab-pane fade">
<h3>Menu 3</h3>
</div>
</div>
</div>
<script>
var n = 0;
var myVar = setInterval(update_news, 1000);
function update_news() {
n++;
if (n === 4) n = 1;
$('#menu'+n).tab('show')
}
</script>