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 相关文章推荐
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
Dec 25 Javascript
jquery实现无限分级横向导航菜单的方法
Mar 12 Javascript
jquery实现从数组移除指定的值
Jun 24 Javascript
10个JavaScript中易犯小错误
Feb 14 Javascript
微信小程序获取微信运动步数的实例代码
Jul 20 Javascript
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
javascript实现QQ空间相册展示源码
Dec 12 Javascript
JS实现可视化文件上传
Sep 08 Javascript
node之本地服务器图片上传的方法示例
Mar 26 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
May 10 Javascript
vue-cli3使用mock数据的方法分析
Mar 16 Javascript
Vue+Flask实现图片传输功能
Apr 01 Vue.js
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
Smarty Foreach 使用说明
2010/03/23 PHP
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python单链表的简单实现方法
2014/09/23 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
Python 一句话生成字母表的方法
2019/01/02 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
代理商会议邀请函
2014/01/27 职场文书
卫生标语大全
2014/06/21 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
学校施工安全责任书
2015/01/29 职场文书
承诺书模板大全
2015/05/04 职场文书
美容院管理规章制度
2015/08/05 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js