gpt4 book ai didi

jquery - Bootstrap 4 在单击事件选项卡和页面上折叠导航选项卡

转载 作者:行者123 更新时间:2023-12-01 05:13:27 25 4
gpt4 key购买 nike

单击导航链接以及在页面上的任意位置单击时关闭事件导航选项卡。

我尝试将removeClass从.tab-pane更改为每种可能的变体,即tabpanel、nav-item、nav-link和只是tab,但没有成功。

$(document).on('click', '.nav-link.active', function() {
var href = $(this).attr('href').substring(1);
//alert(href);
$(this).removeClass('active');
$('.tab-pane[id="' + href + '"]').removeClass('active');
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#home" role="tab">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#profile" role="tab">Profile</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#messages" role="tab">Messages</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#settings" role="tab">Settings</a>
</li>
</ul>

<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane" id="home" role="tabpanel">A</div>
<div class="tab-pane" id="profile" role="tabpanel">B</div>
<div class="tab-pane" id="messages" role="tabpanel">C</div>
<div class="tab-pane" id="settings" role="tabpanel">D</div>
</div>

当在打开的选项卡上单击导航链接时,输出应关闭该选项卡。

最佳答案

在 BS v4 中,有一个 .tab('show')方法,但没有任何方法可以关闭选项卡,因此您必须手动更新类和属性才能关闭面板,这是正确的。

仅当单击事件导航项触发事件时,您当前的事件监听器才会触发。这可以帮助关闭当前导航项,但通常不会执行任何操作来响应文档中的点击。

您将需要另一个文档级别的监听器。然后检查您是否单击了不属于导航的某个位置,并执行相同的代码来关闭事件选项卡

// listen for clicks to active nav
$(document).on('click', '.nav-link.active', function() {
hideTab($(this))
});

// listen for clicks everywhere
$(document).on('click', function(e) {
// if clicked on nav, return
if ($(e.target).closest(".nav-tabs,.tab-content").length) {return}

// otherwise, off clicks should close nav
hideTab($('.nav-link.active'))
});

function hideTab($activeNav) {
// deselect nav item
$activeNav.removeClass('active').attr('aria-selected', "false")

// identify tab pane & deselect
$($activeNav.attr("href")).removeClass('active');
}

堆栈片段中的演示

// listen for clicks to active nav
$(document).on('click', '.nav-link.active', function() {
hideTab($(this))
});

// listen for clicks everywhere
$(document).on('click', function(e) {
// if clicked on nav, return
if ($(e.target).closest(".nav-tabs,.tab-content").length) {return}

// otherwise, off clicks should close nav
hideTab($('.nav-link.active'))
});

function hideTab($activeNav) {
// deselect nav item
$activeNav.removeClass('active').attr('aria-selected', "false")

// identify tab pane & deselect
$($activeNav.attr("href")).removeClass('active');
}
body {
background-color: #fff1d7 !important;
padding: 15px;
height: 100vh;
}
.tab-content,
.nav-tabs {
background: white;
}
.tab-pane {
padding: 10px;
}
h2 {
margin-top: 3em !important;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.bundle.js"></script>

<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#home" role="tab">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#profile" role="tab">Profile</a>
</li>
</ul>

<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane" id="home" role="tabpanel">Home Info</div>
<div class="tab-pane" id="profile" role="tabpanel">Profile Info</div>
</div>

<h2>Click Anywhere to Close </h2>

关于jquery - Bootstrap 4 在单击事件选项卡和页面上折叠导航选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56676797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com