先给出示例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>
&nbsp;<button type="button" class="close" aria-label="Close" id="closetabbtn"><span aria-hidden="true" style="color:red">&times;</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事件

在此基础上,可以实现各种场景下的应用。

Bootstrap技术: 如何给nav导航组件的tab页增加关闭按钮以及动态的添加和关闭tab页的更多相关文章

  1. 详解Bootstrap导航组件

    在bootstrap框架中将导航独立出来成为一个导航组件,根据不同的版本,可以找到相应的源码: LESS:  navs.less SASS:  _navs.scss 标签形导航,也称选项卡导航 标签形 ...

  2. Bootstrap入门(十二)组件6:导航标签页

    Bootstrap入门(十二)组件6:导航标签页   1.标签页 2.胶囊式标签页 3.垂直展示 4.两端对齐的标签页 5.禁用的链接 6.添加下拉菜单   先引入本地的CSS文件和JS文件(注:1. ...

  3. Bootstrap(7) 输入框和导航组件

            一.输入框组件 文本输入框就是可以在<input>元素前后加上文字或按钮,可以实现对表单控件的扩展. //在左侧添加文字 <!-- //在左侧添加文字 --> ...

  4. 第二百三十八节,Bootstrap输入框和导航组件

    Bootstrap输入框和导航组件 学习要点: 1.输入框组件 2.导航组件 3.导航条组件 本节课我们主要学习一下Bootstrap的两个个组件功能:输入框组件和导航导航条组件. 一.输入框组件 文 ...

  5. Bootstrap导航组件

    Bootstrap 中的导航组件都依赖同一个 .nav 类,状态类也是共用的.改变修饰类可以改变样式. 标签页 注意 .nav-tabs 类依赖 .nav 基类 <ul class=" ...

  6. Bootstrap 输入框和导航组件

    一.输入框组件 //在左侧添加文字 <div class="input-group"> <span class="input-group-addon&q ...

  7. Bootstrap 学习笔记3 输入框和导航组件

    导航组件: 导航条组件: 导航条代码: <nav class="navbar navbar-default"> <div class="containe ...

  8. 微信小程序 自定义导航组件 nav头部 全面屏设计

    nav-dynamic 微信小程序自定义nav头部组件:适配全面屏设计: 实现功能 初始进入页面时,展示初始状态下的nav样式: 页面滚动时,监听页面滚动事件,展示滚动状态下的nav样式: 根据配置字 ...

  9. Bootstrap每天必学之导航条

    http://www.jb51.net/article/75534.htm Bootstrap每天必学之导航条,本文向大家讲解了多种多样的导航条,以及导航条中元素的实现方法,感兴趣的小伙伴们可以参考一 ...

随机推荐

  1. Sass入门——简介+语法格式及编译调试

    本文来自慕课网大漠. Sass简介 Sass和SCSS区别 1.后缀名不同,很好理解 2.Sass以严格的缩进语法规则书写,不带大括号和分号:而SCSS的语法规则和CSS的语法很类似. Sass: $ ...

  2. 优酷DEMO

    http://v.youku.com/v_show/id_XMTQxOTc4ODA4OA==.html http://v.youku.com/v_show/id_XMTQxOTc5MjU1Mg==.h ...

  3. JavaSE学习总结第14天_API常用对象4

      14.01 如何校验一个QQ号码案例 import java.util.Scanner; /* * 校验qq号码. * 1:要求必须是5-15位数字 * 2:0不能开头 * * 分析: * A:键 ...

  4. 设计模式值六大原则——设计模式之六大原则——单一职责原则(SRP)

    定义: 应该有且仅有一个原因引起类的变更. There should never be more than one reason for a class to change. 优点: 1.类的复杂性降 ...

  5. ThinkPHP第五天(提交类型判定常量IS_POST等,错误页面种类,Model实例化方式,模板中使用函数,foreach循环,模板中.语法配置)

    1.IS_GET.IS_POST.IS_PUT.IS_DELETE.IS_AJAX常量,方便快捷实现各个判断. 在Action类中还可以使用$this->isPost()等进行判断. 2.错误页 ...

  6. TC基础使用指南(基于xbeta的TC配置文件)

    所有常用目录都可以通过ctrl+d加一个或几个字母的超快捷方式直接跳转到位. 按下BackSpace键,就可以进入到上一级目录 Ctrl+q 在右侧打开左侧选定文件,再按一次Ctrl+q退出 按 Ct ...

  7. Java学习之IO之File类二

    之前学了File便想把我学习视频的名字改了,因为文件名太长不好看,便试着写了个功能实现 package com.gh.file; import java.io.File; /** * 批量文件命名 * ...

  8. ubuntu ???????????? no permissions 问题解决

    近期的一个项目须要用到linux开发android程序! 发现ubuntu有小米开发连接不上!  搞了一个下午才搞成功! 看看吧! 小米手机利用USB连接到Ubuntu 10.04系统.执行以下的命令 ...

  9. Linux下的定时器

    以下摘自linux下的man文件:(man  getitimer) #include  <sys/time.h> int  getitimer(int which,  struct iti ...

  10. 树莓派安装mysql

    首先我想启用root用户,所以我先启用root用户: sudo passwd root 这里会提示输入两次密码,然后: sudo passwd --unlock root 这样就可以启动root登录, ...