jQuery实现Tab选项卡切换效果简单演示


Posted in Javascript onNovember 23, 2015

本文实例针对jQuery实现Tab选项卡切换效果进行了简单演示,完全是自己的思考实现过程,分享给大家供大家参考。具体如下:

起初我Html代码架子是这样的:

<div class="tabs">  
  <ul>
   <li class="acss" data-box="#panel-1">标签1</li>
   <li class="bcss" data-box="#panel-2">标签2</li>
   <li class="bcss" data-box="#panel-3">标签3</li>
  </ul>
  <div id="panel-1">内容111111</div>
  <div id="panel-2" style="display:none;">内容222222</div>
  <div id="panel-3" style="display:none;">内容333333</div>
</div>

后来换成了下面这个:

<dl class="tabs">
  <dt>
   <a class="acss" href="#panel-1">标签1</a>
   <a class="bcss" href="#panel-2">标签2</a>
   <a class="bcss" href="#panel-3">标签3</a>
  </dt>
  <dd id="panel-1">内容1</dd>
  <dd id="panel-2" style="display:none;">内容2</dd>
  <dd id="panel-3" style="display:none;">内容3</dd>
 </dl>

之所以换成这个,是因为我觉得 dl dt dd 在页面布局中用的比 div ul li 要少,这样可以做到更好的隔离性。我们用js操作dl dt dd 对象,就会更少的影响到页面内其它元素,还有就是不用在li标签中自定义data-box属性,更符合页面书写标准。而且这个结构的整体感觉也比上面那个好。
插件的实现代码如下:

(function ($) {
   $.fn.Tabs = function (options) {
    //默认参数设置
    var settings = {
     beforeCss: "bcss", //激活前样式名
     afterCss: "acss", //激活后样式名
     model: "mouseover" //切换方式("mouseover"或者"click")
    };

    //不为空,则合并参数
    if (options)
     $.extend(settings, options);

    //获取a标签集合
    var arr_a = $("> dt > a", this);

    //给a标签分别绑定事件
    arr_a.each(function () {
     $(this).bind(settings.model, function (event) {






//去除a标签的锚点跳转
    

 event.preventDefault();
      //样式控制
      $(this).removeClass().addClass(settings.afterCss)
      .siblings("a").removeClass().addClass(settings.beforeCss);
      //隐藏与显示控制
      var dd_id = $(this).attr("href");
      $(dd_id).show().siblings("dd").hide();
     });
    });

    //遵循链式原则
    return this.each(function () { });
   };
})(jQuery);

之所以说是轻量级,是因为代码量真的很少,也很简单。加了注释相信大家都可以看懂。

其中settings中的model是用来控制切换方式的:

  • 当为"click"时,点击实现切换;
  • 当为"mouseover"时,鼠标滑入实现切换。

开始时是想用hover来实现鼠标滑入切换的,结果发现,hover不支持bind绑定。因为hover是jquery通过封装 mouseover事件 的产物,它并不是一个正宗的事件,因此无法绑定。
下面给出个DEMO:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title></title>
 <style type="text/css">
  *
  {
   margin: 0;
   padding: 0;
  }    
  .tabs
  {
   width: 504px;
   margin: 50px auto;
   }
   
   .acss,.bcss
   {   
   text-decoration:none;
   line-height: 35px;
   font-size: 14px;
   padding:8px 15px;    
   }
   
   .bcss
   {
    background-color: #D4D4D4;
    border-bottom:1px solid white;
    }
   .acss
   {
    background-color: orange;
    border-bottom:1px solid orange;
    }   
   .tabs dd
   {
   width: 500px;
   height: 300px;
   border: 1px solid orange;
   text-align: center;
   line-height: 300px;
   }
 </style>
</head>
<body>
 
 <dl class="tabs" id="tabs1">
  <dt>
   <a class="acss" href="#panel-1">标签1</a>
   <a class="bcss" href="#panel-2">标签2</a>
   <a class="bcss" href="#panel-3">标签3</a>
  </dt>
  <dd id="panel-1"><h1>鼠标滑入切换</h1></dd>
  <dd id="panel-2" style="display:none;">内容2</dd>
  <dd id="panel-3" style="display:none;">内容3</dd>
 </dl> 
 <dl class="tabs" id="tabs2">
  <dt>
   <a class="acss" href="#panel-4">标签1</a><!--默认第一个激活-->
   <a class="bcss" href="#panel-5">标签2</a>
   <a class="bcss" href="#panel-6">标签3</a>
  </dt>
  <dd id="panel-4"><h1>鼠标点击切换</h1></dd><!--默认第一个显示-->
  <dd id="panel-5" style="display:none;">内容2</dd>
  <dd id="panel-6" style="display:none;">内容3</dd>
 </dl>

 <script src="../js/jquery-1.4.1.min.js" type="text/javascript"></script>
 <script src="../js/jquery.similar.Tabs.js" type="text/javascript"></script>
 <script type="text/javascript">
  $("#tabs1").Tabs(); //默认鼠标滑入切换
  $("#tabs2").Tabs({model:"click"}); //设置为点击切换
 </script>
</body>
</html>

效果图如下:

jQuery实现Tab选项卡切换效果简单演示

希望本文所述对大家学习jquery程序设计有所帮助。

Javascript 相关文章推荐
Js 订制自己的AlertBox(信息提示框)
Jan 09 Javascript
Javascript String.replace的妙用
Sep 08 Javascript
jQuery实现form表单reset按钮重置清空表单功能
Dec 18 Javascript
优化Node.js Web应用运行速度的10个技巧
Sep 03 Javascript
基于Vuejs实现购物车功能
Aug 02 Javascript
JavaScript队列的应用实例详解【经典数据结构】
Apr 12 Javascript
深入理解vue-loader如何使用
Jun 06 Javascript
jQuery 实现图片的依次加载图片功能
Jul 06 jQuery
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
Apr 19 Javascript
js实现一款简单踩白块小游戏(曾经很火)
Dec 02 Javascript
Vue Render函数原理及代码实例解析
Jul 30 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
Oct 18 Javascript
JS鼠标拖拽实例分析
Nov 23 #Javascript
基于jQuery实现简单的折叠菜单效果
Nov 23 #Javascript
jquery无限级联下拉菜单简单实例演示
Nov 23 #Javascript
jquery实现图片放大镜功能
Nov 23 #Javascript
jquery自定义表格样式
Nov 23 #Javascript
jquery实现表单验证简单实例演示
Nov 23 #Javascript
JavaScript与HTML的结合方法详解
Nov 23 #Javascript
You might like
php 日期时间处理函数小结
2009/12/18 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
PHP 错误处理机制
2015/07/06 PHP
PHP多文件上传实例
2015/07/09 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
javascript 写类方式之三
2009/07/05 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
浅析python打包工具distutils、setuptools
2018/04/20 Python
Django添加feeds功能的示例
2018/08/07 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
python算的上脚本语言吗
2020/06/22 Python
python使用smtplib模块发送邮件
2020/12/17 Python
python switch 实现多分支选择功能
2020/12/21 Python
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
什么是makefile? 如何编写makefile?
2013/01/02 面试题
后勤副校长自我鉴定
2013/10/13 职场文书
联谊会主持词
2014/03/26 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
python基础之while循环语句的使用
2021/04/20 Python
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技