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实现的动态文字变化输出效果示例【附演示与demo源码下载】
Mar 24 jQuery
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
JS/jquery实现一个网页内同时调用多个倒计时的方法
Apr 27 jQuery
jQuery树插件zTree使用方法详解
May 02 jQuery
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
Sep 12 jQuery
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
Jan 25 jQuery
基于jQuery实现无缝轮播与左右点击效果
May 13 jQuery
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
jQuery滑动效果实现方法分析
Sep 05 jQuery
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
JQuery样式与属性设置方法分析
Dec 07 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
关于尾递归的使用详解
2013/05/02 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
彻底理解Python中的yield关键字
2019/04/01 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
考试退步检讨书
2014/01/15 职场文书
歌唱比赛主持词
2014/03/18 职场文书
买卖协议书范本
2014/04/21 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs