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 Validate 无法验证 chosen-select元素的解决方法
May 17 jQuery
jQuery开源组件BootstrapValidator使用详解
Jun 29 jQuery
jQuery 循环遍历改变a标签的href(实例讲解)
Jul 12 jQuery
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
JQuery元素快速查找与操作
Apr 22 jQuery
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
关于jquery中attr()和prop()方法的区别
May 28 jQuery
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
Jquery的Ajax技术使用方法
Jan 21 jQuery
jQuery实现简易QQ聊天框
Feb 10 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/17 PHP
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
uni-app如何页面传参数的几种方法总结
2020/04/28 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
分享一个常用的Python模拟登陆类
2015/03/29 Python
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
一份python入门应该看的学习资料
2018/04/11 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
python怎么对数字进行过滤
2020/07/05 Python
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
电气自动化大学生求职信
2013/10/16 职场文书
机械电子工程专业推荐信范文
2013/11/20 职场文书
区域销售经理岗位职责
2013/12/10 职场文书
作文评语集锦
2014/12/25 职场文书
西安大雁塔导游词
2015/02/10 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
MySQL空间数据存储及函数
2021/09/25 MySQL
python在package下继续嵌套一个package
2022/04/14 Python