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和ajax代替iframe的方法(详解)
Apr 12 jQuery
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
jQuery输入框密码的显示隐藏【代码分享】
Apr 29 jQuery
jQuery返回定位插件详解
May 15 jQuery
jquery Form轻松实现文件上传
May 24 jQuery
jQuery导航条固定定位效果实例代码
May 26 jQuery
Jquery EasyUI $.Parser
Jun 02 jQuery
jquery实现左右轮播图效果
Sep 28 jQuery
jQuery实现列表的增加和删除功能
Jun 14 jQuery
jquery 通过ajax请求获取后台数据显示在表格上的方法
Aug 08 jQuery
jQuery轮播图实例详解
Aug 15 jQuery
jQuery动态操作表单示例【基于table表格】
Dec 06 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 VS ASP
2006/10/09 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
JavaScript简介
2015/02/15 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
vue.js的提示组件
2017/03/02 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
Python ZipFile模块详解
2013/11/01 Python
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
分析python切片原理和方法
2017/12/19 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
幼儿园大班毕业教师寄语
2014/04/03 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
学校财务管理制度
2015/08/04 职场文书
python获取对象信息的实例详解
2021/07/07 Python
Vue3中的Refs和Ref详情
2021/11/11 Vue.js