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操作表格(隔行着色,高亮显示,筛选数据)
Feb 23 Javascript
Yii2使用Bootbox插件实现自定义弹窗
Apr 02 Javascript
基于BootStrap环境写jQuery tabs插件
Jul 12 Javascript
AngularJS入门教程之AngularJS 模板
Aug 18 Javascript
浅谈JavaScript的函数及作用域
Dec 30 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
Nov 14 Javascript
浅谈Webpack核心模块tapable解析
Sep 11 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
Oct 12 Javascript
JavaScript实现飞舞的泡泡效果
Feb 07 Javascript
javascript使用Blob对象实现的下载文件操作示例
Apr 18 Javascript
Angular8 简单表单验证的实现示例
Jun 03 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下连接mssql2005的代码
2011/01/17 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
ThinkPHP之getField详解
2014/06/20 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
Django学习笔记之Class-Based-View
2017/02/15 Python
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
django创建超级用户过程解析
2019/09/18 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
日本无添加化妆品:HABA
2016/08/18 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
高考自主招生自荐信
2013/10/20 职场文书
女娲补天教学反思
2014/02/05 职场文书
高中毕业自我评价
2014/02/08 职场文书
疾病捐款倡议书
2014/05/13 职场文书
项目合作协议书
2014/09/23 职场文书
高二化学教学反思
2016/02/22 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript