问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何给nav导航组件的tab页增加关闭按钮以及动态的添加和关闭tab页

发布网友 发布时间:2022-06-10 16:26

我来回答

1个回答

热心网友 时间:2024-07-02 02:28

先给出示例html代码

<div>
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist" id="contentnavid">
<li role="presentation" class="active"><a href="#tab1" aria-controls="tab1" role="tab" data-toggle="tab">tab1</a></li>
<li role="presentation"><a href="#tab2" aria-controls="tab2" role="tab" data-toggle="tab">tab2</a></li>
<li role="presentation"><a href="#tab3" aria-controls="tab3" role="tab" data-toggle="tab">tab3</a></li>
<li role="presentation" id="closetabli"><a href="#closetab" aria-controls="closetab" role="tab" data-toggle="tab"><span>closetab</span>
<button type="button" class="close" aria-label="Close" id="closetabbtn"><span aria-hidden="true" style="color:red">×</span></button>
</a></li>
</ul>

<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="tab1">this is tab1</div>
<div role="tabpanel" class="tab-pane active" id="tab2">this is tab2</div>
<div role="tabpanel" class="tab-pane active" id="tab3">this is tab3</div>
<div role="tabpanel" class="tab-pane active" id="closetab">this is closetab</div>
</div>
</div>

上面的html代码中,显示的导航组件有4个tab页,其中最后一个tab页的标签的右边有一个 x 的关闭按钮。

下面我们要实现就是当点击x关闭按钮时,可以把这个带关闭按钮的tab隐藏掉,并显示最近一次显示的tab页。

具体示例代码如下:

<script>
var activeTab = "tab1"; //当前的tab页。默认为第一个tab页。
var previousTab; //上一个打开的tab页。默认为空。
$(function(){
//实现事件响应函数,当tab页被显示时会触发
$(‘a[data-toggle="tab"]‘).on(‘shown.bs.tab‘, function (e) {
//获取当前被显示的tab页标签的aria-controls属性值
activeTab = $(e.target).attr("aria-controls");
//获取前一个被显示的tab页标签的aria-controls属性值
previousTab = $(e.relatedTarget).attr("aria-controls");
});

//点击带关闭按钮tab页标签上的x后的响应事件
$("#closetabbtn").click(function(e){
$(this).parent().parent().css("display","none"); //隐藏tab头,调用remove方法就是删除了
$("#closetab").css("display","none"); //隐藏tab正文信息,调用remove方法就是删除了
if(activeTab=="closetab"){ //判断当前tab页是否是带关闭按钮的tab页,如果是,则显示上次打开的tab页
$(‘#contentnavid a[href="#‘+previousTab+‘"]‘).tab(‘show‘); //显示tab页
}
return false; //一定要return false,阻止事件往上冒泡
});
});
</script>

上面给出了js代码。

本文给出了最核心的处理逻辑,其中关键的地方有:

1)增加关闭按钮,并处理click事件

2)处理tab的show事件

在此基础上,可以实现各种场景下的应用。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
猫咪丢了之后心里很难过,然后男友担心我就重新去领养了一只小花猫,可是... 有关名侦探柯南黑暗组织!! qq上删除的好友怎么找回来,六个月以上的。只要能找到QQ号就行,我可以... 六个月内删掉的qq好友能找回吗? 急!!因欠费而停机的手机能收到短信吗 手机关机之后停机信息是否可以收到 手机欠费后冲了钱但还是欠费会收到短信吗 手机停机了,包月的流量没用完,能收到微信吗? 德州到潍坊用不用隔离? 南都周刊2011年有一篇社论≪躺在时间的河流上怀念他们≫写得很棒... 排量决定耗油量吗? 汽车排量与油耗成正比吗? 有哪些非常好看的电视剧,让人中途不会弃剧,一口气直接看完?_百度知 ... 幻彩红宝石用什么底沙 苹果id密码在哪设置 在美国为什么精算师年新高?如今精算师这个职业竞争激烈吗? ...需要多少钱?正常多长时间拿下?现在美国精算师就业情况怎_百度知 ... 联通畅爽冰激凌5G套餐副卡可共享哪些内容? 联通冰淇淋卡可以办副卡么? 请问查中国联通创伤冰淇淋5G套餐副卡提供哪些内容? 联通5G畅越冰激凌239元档套餐能加几张副卡? 皮鞋发臭了怎么办 新皮鞋穿着发臭怎么办 用西瓜做饮料的时候。怎么做才能果汁更浓郁? 自制植物饮料 快手卖家没有货了让买家退款买家要求赔偿怎么处理 人最害怕失去什么??? 人一般最怕什么? 一个人最怕的是什么? 人的一生最怕的是什么? 如何在JS中删除table中的一行 中国东临哪个大洋? 读大洲、大洋分布图,回答下列问题.(1)我国东临___洋,领土大部分位于五带... 我国位于世界上最大的___大陆的东部,东临___洋;是一个___兼备的国家... ...哪个洲?最大和最小的洋分别是哪个洋?我国位于哪个洲?东临哪个... 世界上有5万多的手机吗??? 我想买一个10万到30万的表,还有一个5万元左右的手机,给推荐一个吧 5万块的手机用起来什么体验 价格5万以上的手机有什么 辛巴不再沉默,带着5万台手机高调回归,官媒点名批评都拦不住吗? 手机电池有没有5万毫安的 手机鲁大师跑分5万,可以打王者荣耀吗 每天送5万部oppo r9s手机是真的吗 红米手机在哪购买,今天小米公司说有5万部机子要卖,怎么找不到地方_百... 5万做手机批发生意 平板电脑主流尺寸是多少 梨树冬天有开花的吗 料理机是榨汁机吗-2.66 10份李树和梨树为什么会开花呢? 梨树秋天又开花是怎么回事?