我正在使用bootstrap并尝试在标签1中创建一个“激活”(切换到)标签2的按钮。
这是我的代码:
HTML导航标签:
<ul id="pageSwitcher" class="nav nav-tabs" style="width:100%;">
<li><a href="#page1" data-toggle="tab">Page One</a></li>
<li><a href="#page2" data-toggle="tab">Page Two</a></li>
</ul>
HTML标签内容:
<div class="tab-content" style="width:100%;">
<div class="tab-pane active" id="page1">
<button type="button" onclick="showPageTwo();">Proceed to page 2</button>
</div>
<div class="tab-pane" id="page2">
<p>Page 2 content here!</p>
</div>
</div>
JavaScript的:
<script type="text/javascript">
$(document).ready(function() {
$('#myTab a').click(function (e) {
e.preventDefault();
$(this).tab('show');
}
});
function showPageTwo() {
$('#pageSwitcher li:eq(1) a').tab('show');
}
</script>
有谁愿意提供一些有关我出错的地方的见解?我几乎完全复制了几个例子...... 点击标签本身工作正常,我似乎无法在页面1的底部创建一个激活第2页的按钮。
答案 0 :(得分:2)
一个:糟糕的形式,内联点击通话......你不需要它,摆脱它:
<button type="button">Proceed to page 2</button>
二:你有两个JS错误。您没有关闭.click()函数,并且您尝试使用li:eq(0)...
的说明符触发第一个选项卡$(document).ready(function() {
$('#myTab a').click(function (e) {
e.preventDefault();
$(this).tab('show');
// ALSO, you were missing a closing paren, here!
});
//two issues ... onclick inside your button is trying to access
// your function before it's available... inline js like that, bad idea anyhow
// so hook into it inside your DOM ready code here anyhow.
var showPageTwo = function() {
// secondly, you're looking at the wrong item!
// li:eq(0) means "look at the first li in the array of li"
$('#pageSwitcher li:eq(1) a').tab('show');
};
$(".tab-content").on("click","#page1 button", showPageTwo);
});
有关工作示例,请参阅此jsFiddle:http://jsfiddle.net/mori57/Xr9eT/
答案 1 :(得分:1)
为您的按钮添加ID:
<div class="tab-content" style="width:100%;">
<div class="tab-pane active" id="page1">
<button type="button" id="myButton">Proceed to page 2</button>
</div>
<div class="tab-pane" id="page2">
<p>Page 2 content here!</p>
</div>
</div>
然后只触发右侧锚点的点击,其余部分由bootstrap执行:
$(document).ready(function() {
$('#myTab a').on('click', function(e) {
e.preventDefault();
$(this).tab('show');
});
$('#myButton').on('click', function() {
$('.nav-tabs li:eq(1) a').trigger('click');
});
});
答案 2 :(得分:0)
您不应该为按钮使用特定代码,而应使用通用事件驱动的流程:
- 您应该在按钮中添加一个属性,以指定它将重定向到哪个页面
- 然后附加一个点击事件
- 将click事件附加到选项卡以执行相同的操作
HTML:
<button type="button" id="btn" gotoPage="#page2">Proceed to page 2</button>
JS处理标签切换:
function showPage(pageId){
$('.tab-pane').each(function(){
$(this).removeClass('active');
$(this).hide();
});
$(pageId).show();
$(pageId).addClass('active');
}
(由于活跃的课程,你不确定你需要使用show或hide函数,如果CSS管理那些)
然后按下按钮:
$('#btn').click(function(){
var destPage = $(this).attr('gotoPage');
showPage(destPage);
});
对于标签:
$('#pageSwitcher a').each(function(){
$(this).click(function(e){
showPage($(this).attr('href'));
});
});
如果需要,您可以在启动时加载第一页:
$(document).ready(function(){
showPage("#page1"); // default: load page 1
});
答案 3 :(得分:-1)
showPageTwo()应该在document.ready()调用之外声明。