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中去掉数组中的重复值的实现方法
Aug 03 Javascript
JavaScript两种跨域技术全面介绍
Apr 16 Javascript
javascript实现英文首字母大写
Apr 23 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
May 14 Javascript
asp知识整理笔记3(问答模式)
Sep 27 Javascript
jQuery判断是否存在滚动条的简单方法
Sep 17 Javascript
AngularJS用户选择器指令实例分析
Nov 04 Javascript
JS百度地图搜索悬浮窗功能
Jan 12 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 jQuery
Vue中使用方法、计算属性或观察者的方法实例详解
Oct 31 Javascript
微信小程序 确认框的实现(附代码)
Jul 23 Javascript
ElementUI实现el-form表单重置功能按钮
Jul 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文件操作实现代码分享
2011/09/01 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
常用DOM整理
2015/06/16 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
python查找第k小元素代码分享
2013/12/18 Python
Python二维码生成识别实例详解
2019/07/16 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
一份报关员的职业规划范文
2014/01/08 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
体育教师个人工作总结
2015/02/09 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis