引言:

  在项目中不同页面经常要用到已经写好的交互,比如弹窗,比如下拉菜单,比如选项卡,比如删除...

此时如果每次都把代码copy一份无疑是一件比较麻烦并且无趣的事情,而且个人认为有些low了,我们可是要追寻

高大上的90后有为青年呢~可是该如何高大上呢?这时jQuery自定义插件开发来了,第一次听到插件开发觉得如此happy,

遂动手网上查找资料进行学习,如下,我用自己的语言将插件开发的程序步骤写出来,如有错误,欢迎指正。

1:jQuery插件开发分为类级别开发和对象级别开发,因为类级别开发在真实项目中几乎不用,下面只对象级别进行探究。

a , 首先准备好一个架子,如下:

;$(function($){})(jQuery);

b, 这个架子是你编写插件代码要写入的空间,下面简单解释一下这个架子:

1)在jQuery环境下封装自己的插件,首先为避免与其他库的冲突,需要在插件的后面传一个jQuery参数进去,对应的函数里面的参数写入$

2)未避免出现问题,需在插件的前后加入分号(分号的增加并不会影响程序的运行)

2:再上一个架子

;(function($){$.fn.tab = function(options){var defaults = {//各种参数,各种属性}var options = $.extend(defaults,options);this.each(function(){//各种功能});return this;}})(jQuery);

这个架子是个什么东西呢?原来他是jQuery官方提供的一个标准化的开发模式,这里简单地介绍一下,不作详要说明,细节有兴趣的童鞋可以自己百度一下。

$.fn.tab  这个tab是你这个功能插件的名字,可任意改变名字,你自己知道就好了。

var options = $.extend(defaults,options);  这个是利用extend方法把 defaults对象的方法属性全部整合到 options里,

也就是options继承了defaults对象的方法以及属性。这个defaults和options名字是可以随意更改的,只要是满足js的命名规范。

this.each(function(){});就不介绍了,下面会通过一个实例表现它,这里你只需要知道他是实现功能代码的地方就可以啦~

至于return this; 就留到实例结束后面再说,这样做肯定是有原因的啦,别心急~

3:心细的girls or boys 肯定知道这个实例是什么啦,没错,是tab选项卡~

下面以tab选项卡的方式来explore这个插件的编写。

a: 先备好html,

<div class="tab">

  <ul class="tab_nav">
    <li class="current">html</li>
    <li>css</li>
    <li>js</li>
  </ul>

  <div class="tab_content">
    <div style="display:block;">html</div>
    <div>css</div>
    <div>js</div>
  </div>
</div>

b,页面是这样的:

c,ok,页面已经准备就绪,现在可以来写插件了,先上代码

;(function($){
    $.fn.tab = function(options){var defaults = {//各种参数,各种属性}var options = $.extend(defaults,options);this.each(function(){//各种功能  //可以理解成功能代码var _this = $(this);_this.find('.tab_nav>li').click(function(){$(this).addClass('current').siblings().removeClass('current');var index = $(this).index();_this.find('.tab_content>div').eq(index).show().siblings().hide();});});return this;}})(jQuery);

d,这个时候只需要看this.each下的功能代码,学过jQuery的同学都知道代码实现,这里主要就调用插件和配置参数这一块来进行探究。

4,在html代码里我们只需要:

<script>$(function(){$('.tab').tab();});
</script>

a,找到外部容器,并调用你所写的tab方法(就是你所写的插件名字):

$.fn.tab = function(options){}

b,敏感的童鞋肯定发现了功能代码里面的class元素以及事件是被写死的,要是我们在另外一个页面写的class和事件需求和这个插件的不同,

除了改插件源码之外这个插件就没法用用了,作为可扩展性的插件我们怎么可以把它写死呢?嗯哼?当然不可以啦~

好,就让我们一起来解决它吧:

1)请看下图:

2) 没错,就在这里配置它,我们可以看到哪些东西被写死了呢?下图:

3) 现在我们可以在default对象里面绘画你的小空间啦~见下图:

3)有的同学可能会疑惑为什么用options调用呢?其实上面已经说过啦,因为extends将default对象的属性以及方法都整合到了options里。

这时候只需要用options调用就可以了。

4)同样的如果需求是把click事件改为mouseover事件,此时我们需要用到on() or bind() ,这样就方便我们改事件参数啦,如下:

_this.find(options.tabNav).on('click',function(){}

此时只要在default里写入相应的代码

eventType:'click'

而后同样的变化

_this.find(options.tabNav).on(options.eventType,function(){}

5)此时因为需求是mouseover,这是就不需要改插件源码啦,直接在html里的js代码(or你自己的js总文件里)进行相应的变化就ok啦,如下:

1
2
3
4
5
6
7
8
9
<script>
        $(function(){
            $('.tab').tab({
                currentClass:'current123',
                eventType:'mouseover'
                                .....
            });
        });
</script>

*此时在这里更改class和事件就很方便啦,温馨提示,class改变虽好,可别忘了改对应的css样式名字哦,要成双成配呢~

好了,到这里基本上就要结束啦,哦,对了,return this;还没说呢,宝宝是不会忘记的~

5:jQuery最强大的特性之一莫过于链式操作啦,此时如果你在$('.tab').tab()后面追加操作,你会发现无法实现,如下:

$('.tab').tab().find('.tab_nav>li').css('background','red');

但是当你return this把对象返回出去的时候你会发现又重新实现了~

jQuery编写插件相关推荐

  1. 【原】jQuery编写插件

    分享一下编写设置和获取颜色的插件,首先我将插件的名字命名为jquery.color.js.该插件用来实现以下两个功能1.设置元素的颜色.2.获取元素的颜色. 先在搭建好如下编写插件的框架: ;(fun ...

  2. jquery编写插件的三种方法

    所需了解的知识点: 匿名函数 Function(){ Alert("hello!") } 拓展对象 $.Extend() Jquery内部对象 $.fn 闭包 Var niming ...

  3. 基于JQuery 编写轮播图插件

    基于JQuery 编写轮播图插件 不管是实际开发还是平时的小项目中 ,页面一定有且多个的轮播图,那么为了效率大家可以考虑封装这样的小插件.下面一起看看他的使用方法吧 使用需要准备(往下滑动会看到): ...

  4. 超强1000个jquery极品插件!(连载中。。。。最近更新20090710)

    花N长时间积累的Jquery插件,希望大家喜欢.大家还有什么新的插件,请留言,我们一并收录. 感谢大家的支持. ++++++++++++++++++++++++++++++++++++++++++++ ...

  5. ajax 阻止默认提交,jQuery验证插件:在对ajax调用servlet时,submitHandler不会阻止默认提交-返回false无效...

    我有一个使用jquery和servlet的简单表单.jQuery对Servlet进行Ajax调用,然后Servlet进行一些服务器端计算,然后通过jQuery在同一页面上显示结果.我不希望表单进行默认 ...

  6. jQuery图表插件Flot

    最近正在使用JQuery的flot进行画图,但是这方面的中文帮助实在是太少了,干脆把英文的document直接翻译一下吧.因为也是再学习过程当中,难免会存在翻译不准确的地方,如果文中描述的不明白的话, ...

  7. 10个最好的 jQuery 视频插件(转)

    在这篇文章中已经收集了 10 个最佳的 jQuery 视频插件,帮助开发人员容易地实现网站播放影片功能.可以显示视频和视频播放列表. 1. Bigvideo.js BigVideo.js 是一个 jQ ...

  8. 如何创建一个基本JQuery的插件

    如何创建一个基本的插件 有时您希望在整个代码中提供一些功能.例如,也许你想要一个单一的方法,你可以调用一个jQuery选择,对选择执行一系列的操作.在这种情况下,您可能需要编写一个插件. 链接jQue ...

  9. html5 jquery paint plugin,制作高质量的JQuery Plugin 插件的方法

    JQuery Plugin插件,如果大家不明白什么是JQuery插件或都不清楚如何编写可以查看其官方的网站:jQuery Authoring Guidelines 好了,下面有一些我觉得想做一个好的插 ...

最新文章

  1. Book Review 《构建之法》-2
  2. k8s里面的项目怎么暴露端口让用户访问_从零开始入门 K8s | 可观测性:监控与日志...
  3. 国内外知名工业交换机品牌有哪些?
  4. 揭秘阿里云EB级大数据计算引擎MaxCompute
  5. SpringCloud Gateway 集成 oauth2 实现统一认证授权_03
  6. 总结我在架构师升级过程中的那些坑以及各种体会
  7. 做游戏,学编程(C语言) 1 实现弹跳小球
  8. 2020年第十届C/C++ B组第二场蓝桥杯省赛真题(跑步锻炼)第4道
  9. 5安卓输入法键盘显示 搜索_手机输入法谁更黑科技?讯飞搜狗百度大PK
  10. PE聚乙烯塑料会污染环境吗?
  11. Thinkpad E430 移除网卡白名单
  12. 疫情之下,这10个技巧助你开启云面试的正确姿势
  13. PVE系统更换大硬盘的扩容方法
  14. 创业者2012必看十大文章(10)
  15. OpenCV简单实现PhotoShop图层混合
  16. Java 旋转、翻转图片工具类(附代码) | Java工具类
  17. [计算机网络][内容梳理]一、计算机网络概述
  18. 2022-2028年中国第三方电子支付市场投资分析及前景预测报告
  19. 数据库基础:基本概念
  20. 全新博客社区资讯APP源码 Typecho后端

热门文章

  1. ST函数(ST表)RMQ O(1)查询 离线
  2. springboot + redis
  3. Spring boot系列--redis使用之1
  4. 检测对抗样本_避免使用对抗性T恤进行检测
  5. 在android中使用USB进行通信的4种方法
  6. Leaf:美团分布式ID生成服务开源
  7. DOA——ESPRIT算法
  8. 出国?上研?工作?回家种田?(二) 专业与上研相关问题
  9. vmci.sys版本不正确_这样安装 Python 库才是最正确的哦
  10. php直接读取csv文件,php实现的读取CSV文件函数示例