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轻松实现无缝轮播效果
Mar 22 jQuery
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
深入浅析angular和vue还有jquery的区别
Aug 13 jQuery
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 jQuery
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
jQuery pager.js 插件动态分页功能实例分析
Aug 02 jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 jQuery
Jquery Datatables的使用详解
Jan 30 jQuery
jQuery实现异步上传一个或多个文件
Aug 17 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新手上路(十四)
2006/10/09 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
javascript 函数使用说明
2010/04/07 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
Python类如何定义私有变量
2020/02/03 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
商务英语专业应届毕业生求职信
2013/10/28 职场文书
电钳专业个人求职信
2014/01/04 职场文书
师德学习感言
2014/01/31 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
简易版租房协议书范本
2014/10/13 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书