jquery实现具有嵌套功能的选项卡


Posted in Javascript onFebruary 12, 2016

关于选项卡功能大家一定都不会陌生,无非就是鼠标点击或者悬浮能够切换相关的内容。
通常情况下,大家见到的选项卡都是没有嵌套功能的,也就是说就是完成了一层切换效果,本章节分享一段代码实例,实现了选项卡的嵌套功能,也就是选项卡中嵌套有选项卡功能,也就能够容纳更多的内容。
代码如下:

<head>
<meta charset="gb2312">
<title>jquery选项卡</title>
<style type="text/css">
body, ul, li, div, a{
 margin:0px;
 padding:0px;
}
body{
 margin-top:10px;
 margin-left:15px;
}
#all{
 border-left:1px solid #ccc;
 border-right:1px solid #ccc;
 border-bottom:1px solid #ccc;
 width:255px;
}
#title li{
 float:left;
 list-style:none;
 width:50px;
 border-top:2px solid #f60;
 border-right:1px solid #ccc;
 text-align:center;
 padding-top:3px;
}
#title li:last-child{
 border-right:1px solid #fff;
}
.new{
 border-bottom:1px solid #fff;
 color:#f60;
}
.old{
 border-bottom:1px solid #ccc;
}
#content{
 clear:both;
}
#content ul{
 margin-left:5px;
 list-style:none;
 float:left;
}
#content li{
 width:40px;
 height:30px;
 background-color:#f60;
 text-align:center;
 color:#fff;
}
.inContent{
 width:205px;
 height:90px;
 background-color:#f6c;
 margin-left:50px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript"> 
$(function(){ 
 $("#title li:first").addClass("new").siblings().addClass("old"); 
 $("#content div:first").show().siblings().hide(); 
 $(".inContent:first").show().siblings().hide(); 
 $("#title li").click(function(){ 
  $(this).addClass("new").removeClass("old").siblings().addClass("old").removeClass("new"); 
  $(".info").hide().eq($("#title li").index(this)).show(); 
  $(".info div:first-child").show().siblings().hide(); 
 }); 
 
 $(".info li").mouseover(function(){ 
  $(this).css("color","#20f"); 
  $(".inContent").hide().eq($(".info li").index(this)).show(); 
 }); 
 $(".info li").mouseout(function(){ 
  $(this).css("color","#fff"); 
 });
}); 
</script>
</head>
<body>
<div id="all">
 <div id="title">
  <ul>
   <li>要闻</li>
   <li>国内</li>
   <li>时尚</li>
   <li>旅游</li>
   <li>科技</li>
  </ul>
 </div>
 <div id="content">
  <div style="clear:both;" class="info">
   <ul>
    <li>01</li>
    <li>02</li>
    <li>03</li>
   </ul>
   <div>
    <div class="inContent">A1</div>
    <div class="inContent">B1</div>
    <div class="inContent">C1</div>
   </div>
  </div>
  <div class="info">
   <ul>
    <li>01</li>
    <li>02</li>
    <li>03</li>
   </ul>
   <div>
    <div class="inContent">A2</div>
    <div class="inContent">B2</div>
    <div class="inContent">C2</div>
   </div>
  </div>
  <div class="info">
   <ul>
    <li>01</li>
    <li>02</li>
    <li>03</li>
   </ul>
   <div>
    <div class="inContent">A3</div>
    <div class="inContent">B3</div>
    <div class="inContent">C3</div>
   </div>
  </div>
  <div class="info">
   <ul>
    <li>01</li>
    <li>02</li>
    <li>03</li>
   </ul>
   <div>
    <div class="inContent">A4</div>
    <div class="inContent">B4</div>
    <div class="inContent">C4</div>
   </div>
  </div>
  <div class="info">
   <ul>
    <li>01</li>
    <li>02</li>
    <li>03</li>
   </ul>
   <div>
    <div class="inContent">A5</div>
    <div class="inContent">B5</div>
    <div class="inContent">C5</div>
   </div>
  </div>
 </div>
</div>
</body>
</html>

上面的代码实现了选项卡的嵌套功能,下面介绍一下它的实现过程。
一.实现原理:
原理其实非常的简单,其实就是大的选项卡里面套了一个小的选项卡,先进行大的选项卡的切换,然后再进行小的选项卡的切换,就是这么简单,这里就不多介绍了,具体可以看代码注释。
二.代码注释:
1.$(function(){}),文档结构完全加载完毕再去执行函数中的代码。
2.$("#title li:first").addClass("new").siblings().addClass("old"),在默认状态下,为id属性值为title的元素下第一个li元素添加名为new的class类,然后为其他的兄弟li元素添加old的class类。也就是在默认状态下横向的选项卡第一个字体是红色,其他的都是黑色。
3.$("#content div:first").show().siblings().hide(),将id为content下第一个div设置为显示,其他的兄弟元素隐藏。
4.$(".inContent:first").show().siblings().hide(),将class属性值为inContent的第一个元素设置为显示,兄弟元素隐藏。
5.$("#title li").click(function(){}),为相应的li元素注册click事件处理函数。
6.$(this).addClass("new").removeClass("old").siblings().addClass("old").removeClass("new"),如果点击顶部的li元素的话,会为当前li元素添加名为new的class类,然后删除名为old的class类,然后将其他兄弟元素添加名为old的class类,删除名为new的class类。
7.$(".info").hide().eq($("#title li").index(this)).show(),首先将class名为info的元素隐藏,然后将对应索引的元素显示。
8.$(".info div:first-child").show().siblings().hide(),将info下面的div元素下的第一个子元素设置为显示,其他的元素隐藏。

以上就是本文的详细内容,希望对大家实现jquery选项卡有所帮助。

Javascript 相关文章推荐
JavaScript如何从listbox里同时删除多个项目
Oct 12 Javascript
js单例模式的两种方案
Oct 22 Javascript
JS打开新窗口防止被浏览器阻止的方法
Jan 03 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
Nov 03 Javascript
浅谈javascript 函数表达式和函数声明的区别
Jan 05 Javascript
如何用js判断dom是否有存在某class的值
Feb 13 Javascript
浅谈对Angular中的生命周期钩子的理解
Jul 31 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
Jan 07 Javascript
分享ES6的7个实用技巧
Jan 18 Javascript
简单说说angular.json文件的使用
Oct 29 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
Nov 05 Javascript
JavaScript静态作用域和动态作用域实例详解
Jun 17 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 #Javascript
原生javascript实现自动更新的时间日期
Feb 12 #Javascript
原生javascript实现图片无缝滚动效果
Feb 12 #Javascript
JavaScript实现点击单元格改变背景色的方法
Feb 12 #Javascript
JavaScript实现弹出模态窗体并接受传值的方法
Feb 12 #Javascript
JavaScript判断表单为空及获取焦点的方法
Feb 12 #Javascript
利用JS生成博文目录及CSS定制博客
Feb 10 #Javascript
You might like
提问的智慧
2006/10/09 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
php实现计数器方法小结
2015/01/05 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
js 居中漂浮广告
2010/03/21 Javascript
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
潜说js对象和数组
2011/05/25 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
jquery与prototype框架的详细对比
2013/11/21 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
python eventlet绿化和patch原理
2020/11/21 Python
python openssl模块安装及用法
2020/12/06 Python
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
先进个人事迹材料
2014/01/25 职场文书
二年级语文教学反思
2014/02/02 职场文书
干部现实表现材料
2014/02/13 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL