jQuery实现tab栏切换效果


Posted in jQuery onDecember 22, 2020

本文实例为大家分享了jQuery实现tab栏切换效果的具体代码,供大家参考,具体内容如下

具体实现功能

1、切换选项卡
2、添加选项卡
3、删除选项卡
4、编辑选项卡

html结构

<div class="tabsbox" id="tab">
   <!-- tab标签 -->
   <nav class="firstnav">
    <!-- tab栏标题 -->
    <ul>
     <li class="liactive">
      <span>测试1</span>
      <span class="close">×</span>
     </li>
     <li><span>测试2</span><span class="close">×</span></li>
     <li><span>测试3</span><span class="close">×</span></li>
    </ul>
    <!-- 添加按钮 -->
    <div class="tabadd">
     <span>+</span>
    </div>
   </nav>

   <!-- tab 内容 -->
   <div class="tabscon">
    <section class="conactive">内容1</section>
    <section>内容2</section>
    <section>内容3</section>
   </div>
</div>

css部分

* {
 margin: 0;
 padding: 0;
}
main {
 width: 900px;
 margin: 0px auto;
}
h4 {
 text-align: center;
 line-height: 50px;
}
.tabsbox {
 width: 800px;
 margin: 0 auto;
 border: 1px solid orange;
}
.firstnav {
 position: relative;
 line-height: 40px;
 height: 40px;
 text-align: center;
 border-bottom: 1px solid #999;
}
.firstnav li {
 list-style: none;
 width: 100px;
 float: left;
 border-right: 1px solid #999;
 position: relative;
 cursor: pointer;
}
.firstnav li span {
 /* 阻止用户选中文字 */
 user-select: none;
}
.firstnav li.liactive::after {
 content: "";
 width: 100%;
 height: 2px;
 position: absolute;
 z-index: 11;
 bottom: -2px;
 left: 0;
 background: #fff;
}
.firstnav .close {
 cursor: pointer;
 position: absolute;
 right: 2px;
 top: 2px;
 font-size: 14px;
 color: #666;
 border: 1px solid #ccc;
 width: 14px;
 height: 14px;
 line-height: 12px;
 text-align: center;
 border-radius: 100%;
}
.tabscon {
 height: 300px;
 white-space: normal;
}
.tabscon input {
 width: 100%;
 height: 80px;
}
.tabscon section {
 padding: 30px;
 display: none;
}
.tabscon section.conactive {
 display: block;
}
.tabadd {
 position: absolute;
 padding: 0 10px;
 right: 10px;
 top: 0px;
 font-size: 20px;
 cursor: pointer;
 user-select: none;
}
input {
 width: 50px;
 line-height: 20px;
}

jQuery部分

$(function() {
 // 点击切换
 $('ul').on('click', 'li', function() {
  // 切换选项卡
  $(this).addClass('liactive').siblings().removeClass('liactive')
  // 获取点击的li的索引值
  var index = $(this).index()
  // 排他思想让内容显示与隐藏
  $('.tabscon section').eq(index).stop().show().siblings().hide()
 })
 // 添加选项卡
 $('.tabadd').click(function() {
  // 只能创建7个
  if ($('li').length >= 7) {
  return
  }
  var li = `
 <li><span>New Tab</span><span class="close">×</span></li>
 `
  var section = `
 <section>新增内容</section>
 `
  // 把新增的li添加到ul
  $('ul').append(li)
  // 把新增的内容添加到tabscon
  $('.tabscon').append(section)
  // $('ul li').length - 1这里获取的是索引从0开始
  $('ul').children().eq($('ul li').length - 1).click()
 })
 // 删除选项卡
 $('ul').on('click', '.close', function() {
  // 获取当前li的索引
  var index = $(this).parent('li').index()
  // console.log(index)
  // 要进行判断
  // 三个状态:
  // 1.选中的还是未选中的,不选中不管它
  // 2.选中的情况删除的是第一个,点击后面一个
  // 3.只剩一个不管
  // 如果当前的li是被点击的
  if ($(this).parent().hasClass('liactive')) {
  // 如果当前被点击的不是第一个li
  if (index != 0) {
   // 让它上一个li被点击
   $(this).parent('li').prev().click()
   // 如果li不止一个让下一个li点击
  } else if ($('ul li').length != 1) {
   $(this).parent('li').next().click()
  }
  }
  // 移除当前li
  $(this).parent().remove()
  // 移除当前的内容
  $('.tabscon section').eq(index).remove()
 })
 // 编辑选项卡
 $('ul').on('dblclick', 'li', function() {
 // 选中li子元素的第一个span
 $(this).children().eq(0).html('<input type="text" value="' + $(this).children().eq(0).text() + '"/>')
  // 选中输入框中的文字
 $(this).find('input').select()
  // 失去焦点让span的值等于输入框中的值
 $('input').blur(function() {
  // 让span的值等于输入框中的值
  $(this).parent().text($(this).val())
  })
  // 键盘抬起事件
 $('input').keyup(function(e) {
  // 按下回车失去焦点
  if (e.keyCode == 13) {
  $(this).blur()
  }
 })

 })

})

jQuery实现tab栏切换效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 jQuery
详谈jQuery.load()和Jsp的include的区别
Apr 12 jQuery
jquery仿京东商品放大浏览页面
Jun 06 jQuery
基于jQuery封装的分页组件
Jun 26 jQuery
jQuery常用选择器详解
Jul 17 jQuery
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
Vue中正确使用jQuery的方法
Oct 30 jQuery
webpack里使用jquery.mCustomScrollbar插件的方法
May 30 jQuery
jQuery轮播图实例详解
Aug 15 jQuery
jQuery操作事件完整实例分析
Jan 10 jQuery
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
jQuery实现简易聊天框
Feb 08 jQuery
jQuery+ajax实现文件上传功能
Dec 22 #jQuery
jQuery实现动态向上滚动
Dec 21 #jQuery
Jquery+javascript实现支付网页数字键盘
Dec 21 #jQuery
jquery实现淡入淡出轮播图效果
Dec 13 #jQuery
jquery实现拖拽小方块效果
Dec 10 #jQuery
jQuery实现简单弹幕制作
Dec 10 #jQuery
JQuery绑定事件四种实现方法解析
Dec 02 #jQuery
You might like
php计算程序运行时间的简单例子分享
2014/05/10 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
js获取多个tagname的节点数组
2013/09/22 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
JS &amp; JQuery 动态添加 select option
2016/06/08 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
详解react-redux插件入门
2018/04/19 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
python ansible服务及剧本编写
2017/12/29 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
python实现日常记账本小程序
2018/03/10 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
英文升职感谢信
2015/01/23 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers