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 相关文章推荐
JavaScript 对象成员的可见性说明
Oct 16 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
Nov 20 Javascript
JS修改iframe页面背景颜色的方法
Apr 01 Javascript
关于Function中的bind()示例详解
Dec 02 Javascript
ionic环境配置及问题详解
Jun 27 Javascript
详解Angular Reactive Form 表单验证
Jul 06 Javascript
angular.js实现购物车功能
Oct 23 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
在angular 6中使用 less 的实例代码
May 13 Javascript
JavaScript惰性载入函数实例分析
Mar 27 Javascript
详解如何在vue项目中使用layui框架及采坑
May 05 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
May 21 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 getDocNamespaces()函数讲解
2019/02/03 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
你的自行车健身专家:FaFit24
2016/11/16 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
数据管理员的自我评价分享
2013/11/15 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
喝酒检查书范文
2014/02/23 职场文书
学期评语大全
2014/04/30 职场文书
单位消防安全责任书
2014/07/23 职场文书
房产授权委托书范本
2014/09/22 职场文书
给老婆的保证书
2015/01/16 职场文书
给领导的感谢信范文
2015/01/23 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server