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实现放大镜简洁代码(推荐)
Jun 08 jQuery
jquery.validate表单验证插件使用详解
Jun 21 jQuery
基于jQuery Easyui实现登陆框界面
Jul 10 jQuery
全面解析jQuery中的$(window)与$(document)的用法区别
Aug 15 jQuery
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
jquery获取transform里的值实现方法
Dec 12 jQuery
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
May 26 jQuery
通过jquery.cookie.js实现记住用户名、密码登录功能
Jun 20 jQuery
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
jquery更改元素属性attr()方法操作示例
May 22 jQuery
Jquery cookie插件实现原理代码解析
Aug 04 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 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
Python转换HTML到Text纯文本的方法
2015/01/15 Python
深入理解Django中内置的用户认证
2017/10/06 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
PyQt5实现下载进度条效果
2018/04/19 Python
Python实现的knn算法示例
2018/06/14 Python
python让列表倒序输出的实例
2018/06/25 Python
flask 实现token机制的示例代码
2019/11/07 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
利用python 读写csv文件
2020/09/10 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
餐厅楼面部长岗位职责范文
2014/02/16 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
田径运动会通讯稿
2015/07/18 职场文书
大学新生入学感想
2015/08/07 职场文书
早恋主题班会
2015/08/14 职场文书
如何解决.cuda()加载用时很长的问题
2021/05/24 Python
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技
vue elementUI表格控制对应列
2022/04/13 Vue.js