javascript - Bootstrap 选项卡选项卡 ('show' ) 拒绝工作

标签 javascript html css twitter-bootstrap

你好,

我正在创建一个带有表单 Bootstrap 选项卡 (BS4) 的页面。

现在我需要一个前进和后退按钮表单导航,我想使用 BS4 的选项卡('显示')功能。

然而,即使在概念验证中,我也无法让它发挥作用。 我想知道我做错了什么。

我检查了是否所有 Id 都已设置,以及是否所有内容都匹配。到目前为止一切都是正确的。控制台日志没有给我任何错误或任何信息。

我希望我做的是一个简单的错误,这不是 Bootstrap 问题。

下面是我的概念验证代码:

我的 functions.js 文件的内容:

function activaTab(tab) {
    var tabID = '#' + tab;
    console.log('You just clicked on a function to activate tab : ' + tabID);

    if ($(tabID).length == 0) {
        console.log('But I have to inform you of the misfortunate event that the tab ID you want to pick strangely does not exist');
    }

    $('.nav-tabs a[href="' + tabID + '"]').tab('show'); // Select tab by name
};

我的 HTML 文件的内容:

function activaTab(tab) {
    var tabID = '#' + tab;
    console.log('You just clicked on a function to activate tab : ' + tabID);

    if ($(tabID).length == 0) {
        console.log('But I have to inform you of the misfortunate event that the tab ID you want to pick strangely does not exist');
    }

    $('.nav-tabs a[href="' + tabID + '"]').tab('show'); // Select tab by name
};
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">	
	<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
		<li class="nav-item">
			<a class="nav-link active" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true">Home</a>
		</li>
		<li class="nav-item">
			<a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-selected="false">Profile</a>
		</li>
		<li class="nav-item">
			<a class="nav-link" id="pills-contact-tab" data-toggle="pill" href="#pills-contact" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</a>
		</li>
	</ul>
	<div class="tab-content" id="pills-tabContent">
		<div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">..home.<br />
			<button class="btn btn-lg btn-primary" onclick="activaTab('pills-profile');">go to profile</button>    
		</div>
		<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">..profile.<br />
			<button class="btn btn-lg btn-primary" onclick="activaTab('pills-contact');">go to contact</button>    
		</div>
		<div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">..contact.</div>
	</div>
</div>

<!DOCTYPE html>
<html>
<head>
    <title>activate tab</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="  crossorigin="anonymous"></script>
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
    <script src="functions.js"></script>
</head>
<body>
<div class="container"> 
    <ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
        <li class="nav-item">
            <a class="nav-link active" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true">Home</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-selected="false">Profile</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" id="pills-contact-tab" data-toggle="pill" href="#pills-contact" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</a>
        </li>
    </ul>
    <div class="tab-content" id="pills-tabContent">
        <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">..home.<br />
            <button class="btn btn-lg btn-primary" onclick="activaTab('pills-profile');">go to profile</button>    
        </div>
        <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">..profile.<br />
            <button class="btn btn-lg btn-primary" onclick="activaTab('pills-contact');">go to contact</button>    
        </div>
        <div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">..contact.</div>
    </div>
</div>
</body>
</html>

编辑:

这是一个非常疲惫的头脑造成的..

$('.nav-tabs a[href="' + tabID + '"]').tab('show');//按名称选择选项卡

更改于:

$('.nav-pills a[href="' + tabID + '"]').tab('show');//按名称选择选项卡

最佳答案

在您的 activaTab() 方法中,您在具有类名 nav-tabs 的元素上调用 tab('show'),但是您希望显示有 nav-pills 类。正确的调用应该是:

$('.nav-pills a[href="' + tabID + '"]').tab('show'); // Select tab by name

关于javascript - Bootstrap 选项卡选项卡 ('show' ) 拒绝工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52666562/

相关文章:

html - 虽然将填充放在选择框中并使用 font-family segoe 它仅在 chrome 中剪切文本

html - 我的侧边栏不在我页面的右侧,而是在我的左侧。我该如何解决?

javascript - CSS 表格高度

javascript - 在 Gatsby.js 中使用 GraphQL 从 WP 获取 ACF Flexible 内容

javascript - 我可以向 $(this) 添加一个变量吗?

c# - 如何将对象绑定(bind)到 Blazor 中的 <select> 选项?

html - 显示带有边框折叠的表格边框

javascript - 为什么IE会报错: Object doesn't support property or method isNaN

javascript - 如何处理 Firebase Cloud Functions 中的错误 JSON?

javascript - 每个方法中原型(prototype)声明的必要性