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插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
jquery中each循环的简单回滚操作
May 05 jQuery
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
jquery动态添加以及遍历option并获取特定样式名称的option方法
Jan 29 jQuery
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 jQuery
jQuery解析json格式数据示例
Sep 01 jQuery
jQuery轻量级表单模型验证插件
Oct 15 jQuery
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
Dec 10 jQuery
jquery实现轮播图特效
Apr 12 jQuery
jQuery 移除事件的方法
Jun 20 jQuery
jQuery实现查看图片功能
Dec 01 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单例模式应用详解
2013/06/03 PHP
php中opendir函数用法实例
2014/11/15 PHP
php备份数据库类分享
2015/04/14 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
Vue中如何实现proxy代理
2018/04/20 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
django 单表操作实例详解
2019/07/30 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
学习雷锋活动总结
2014/04/29 职场文书
公司委托书格式范本
2014/09/16 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
2016春节慰问信范文
2015/03/25 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
课题研究阶段性总结
2015/08/13 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
Vue3中toRef与toRefs的区别
2022/03/24 Vue.js
vue里使用create, mounted调用方法
2022/04/26 Vue.js