jQuery实现tab栏切换效果

本文实例为大家分享了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栏切换效果 的全部内容, 来源链接: utcz.com/p/219174.html

回到顶部