jquery插件开发之选项卡制作详解


Posted in jQuery onAugust 30, 2017

在jquery中,插件开发常见的有:

一种是为$函数本身扩展一个方法,这种是静态扩展(也叫类扩展),这种插件一般是工具方法,

还有一种是扩展在原型对象$.fn上面的,开发出来的插件是用在dom元素上面的

一、类级别的扩展

$.showMsg = function(){
   alert('hello,welcome to study jquery plugin dev');
  }
  // $.showMsg();

注意要提前引入jquery库, 上例在$函数上面添加了一个方法showMsg,那么就可以用$.showMsg()调用了

$.showName = function(){
   console.log( 'ghostwu' );
  }
  $.showName();

这种插件比较少见,一般都是用来开发工具方法,如jquery中的$.trim, $.isArray()等等

二、把功能扩展在$.fn上,

这种插件就是用在元素上,比如,我扩展一个功能,点击按钮,显示当前按钮的值

$.fn.showValue = function(){
  return $(this).val();
}

  $(function(){
   $("input").click(function(){
    // alert($(this).showMsg());
    alert($(this).showMsg());
   });
  });

<input type="button" value="点我">

在$.fn上添加一个showValue方法, 返回当前元素的value值. 在获取到页面input元素,绑定事件之后,就可以调用这个方法,显示按钮的值 "点我",在实际插件开发中,常用的就是这种.接下来,我们就用这种扩展机制开发一个简单的选项卡插件:

jquery插件开发之选项卡制作详解

页面布局与样式:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <script src="https://cdn.bootcss.com/jquery/1.12.0/jquery.js"></script>
 <style>
  #tab {
   width:400px;
   height:30px;
  }
  #tab li, #tab ul {
   list-style-type:none;
  }
  #tab ul {
   width:400px;
   height: 30px;
   border-bottom:1px solid #ccc;
   line-height: 30px;
  }
  #tab ul li {
   float:left;
   margin-left: 20px;
   padding:0px 10px;
  }
  #tab ul li.active {
   background: yellow;
  }
  #tab ul li a {
   text-decoration: none;
   color:#666;
  }
  #tab div {
   width:400px;
   height:350px;
   background-color:#ccc;
  }
  .clearfix:after{
   content: '';
   display: block;
   clear: both;
   height: 0;
   visibility: hidden;
  }
 </style>
 <script src="tab2.js"></script>
 <script>
  $(function(){
   $("#tab").tabs( { evType : 'mouseover' } );
  });
 </script>
</head>
<body>
 <div id="tab">
  <ul class="clearfix">
   <li><a href="#tab1">选项1</a></li>
   <li><a href="#tab2">选项2</a></li>
   <li><a href="#tab3">选项3</a></li>
  </ul>
  <div id="tab1">作者:ghostwu(1)
   <div>博客: http://www.cnblogs.com/ghostwu/</div>
  </div>
  <div id="tab2">作者:ghostwu(2)
   <div>博客: http://www.cnblogs.com/ghostwu/</div>
  </div>
  <div id="tab3">作者:ghostwu(3)
   <div>博客: http://www.cnblogs.com/ghostwu/</div>
  </div>
 </div>
</body>
</html>

tab2.js文件

;(function ($) {
 $.fn.tabs = function (opt) {
  var def = { evType: "click" }; //定义了一个默认配置
  var opts = $.extend({}, def, opt);
  var obj = $(this);

  $("ul li:first", obj).addClass("active");
  obj.children("div").hide();
  obj.children("div").eq(0).show();

  $("ul li", obj).bind(opts.evType, function () {
   $(this).attr("class", "active").siblings("li").attr("class","");
   var id = $(this).find("a").attr("href").substring(1);
   obj.children("div").hide();
   $("#" + id, obj).show();
  });
 };
})(jQuery);

1,一个自执行函数,把插件封装成模块,把jQuery对象传给形参$

2,第3行,定义一个默认配置,选项卡的触发类型,默认为点击事件

3,第4行,如果opt传参,就用opt的配置,否者就用第3行的默认配置,这行的作用就是为了在不改变插件源码的情况下,可以配置插件的表现形式

4,第7-9行,让选项卡第一个div显示,其余的都隐藏,让第一个tab加上class='active' 黄色高亮选中

5,第11-16行,点击对应的选项卡,让对应的div显示与隐藏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
Mar 23 jQuery
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 jQuery
jQuery Autocomplete简介_动力节点Java学院整理
Jul 17 jQuery
zTree jQuery 树插件的使用(实例讲解)
Sep 25 jQuery
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
Dec 06 jQuery
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
jQuery/JS监听input输入框值变化实例
Oct 17 jQuery
jQuery高级编程之js对象、json与ajax用法实例分析
Nov 01 jQuery
jQuery带控制按钮轮播图插件
Jul 31 jQuery
jquery实现淡入淡出轮播图效果
Dec 13 jQuery
基于jQuery的左滑出现删除按钮的示例
Aug 29 #jQuery
jQuery实现简单的计时器功能实例分析
Aug 29 #jQuery
jQuery动态添加.active 实现导航效果代码思路详解
Aug 29 #jQuery
jQuery实现base64前台加密解密功能详解
Aug 29 #jQuery
jquery在vue脚手架中的使用方式示例
Aug 29 #jQuery
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 #jQuery
jQuery实现锚点向下平滑滚动特效示例
Aug 29 #jQuery
You might like
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
使用yeoman构建angular应用的方法
2017/08/14 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
js实现时钟定时器
2020/03/26 Javascript
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
详解Python中import机制
2020/09/11 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
教师实习自我鉴定
2013/12/13 职场文书
广告学专业自荐信范文
2014/02/24 职场文书
大学校务公开实施方案
2014/03/31 职场文书
2014年征兵标语
2014/06/20 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
我的收音机情缘
2022/04/05 无线电
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS