介绍

什么是插件

  插件我们见得很多了,比如浏览器上我们会安装一些去除广告的插件、美化页面的插件等等。 在前端,我们也常常写一些jquery插件来使用。来添加我们常常写的一些功能,方便使用。

为什么要使用jquery插件

  jQuery 库是专为加快 JavaScript 开发速度而设计的。通过简化编写 JavaScript 的方式,减少代码量。使用 jQuery 库时,您可能会发现您经常为一些常用函数重写相同的代码。如果这样的话,这可能就是您需要编写自定义 jQuery 插件的一个原因。

  简单的说: 当你重复使用jquery编写代码时,就说明你可以把这段代码编写成jquery插件了。

  

普通js插件的一个例子

下面就是一个js插件font.js,我们在使用的时候往往是先引入jquery,然后在引入这个插件(其实这个是没有必要遵从这个顺序的,因为这个不是jquery插件)。

下面我们来看看font.js是怎么来定义这个插件的。

  1. // JavaScript Document
  2. ; (function (win, doc) {
  3. //动态设置font-size值
  4. var h, setUnitA;
  5. win.addEventListener('resize', function () {
  6. clearTimeout(h);
  7. h = setTimeout(setUnitA, );
  8. }, false);
  9. win.addEventListener('pageshow', function (e) {
  10. if (e.persisted) {
  11. clearTimeout(h);
  12. h = setTimeout(setUnitA, );
  13. }
  14. }, false);
  15.  
  16. setUnitA = function () {
  17. doc.style.fontSize = doc.clientWidth / + 'px';
  18. }
  19. setUnitA();
  20.  
  21. })(window, document.documentElement);

注:实际上这不能说是一个jquery插件,因为我们看到这里并没有传入jquery,所以这就是一个普通的插件,方便我们的重复使用。

即这个js文件用于在移动端适配文字,使得显示正常。

ok! 这就是一个jquery插件了。

问题1插件的最前面为什么要使用分号;作为结束呢

解释1:这个很好理解:js代码结束的时候,最后一句是允许不加分号的(比如一个函数的最后一句)。如果某个js代码这么做了,那么把它跟另外一个js脚本拼在一起的时候,原来是“最后一句”的,变成了不是最后一句,于是就出现语法错误了。另外,仅包含分号的语句,和C语言一样,表示一个空语句,完全是符合语法的,所以也不会有错。

解释2:

也就是说这是为了合并压缩js时不会出错才这么设计的。

问题2:这个插件定义的形式是怎么样的?

  我们可以看到这时一个匿名立即执行的函数。 匿名: 这个插件是为了完成一项功能,它并不需要被其他函数调用。 立即执行:目的是避免变量命名冲突的问题。

问题3 对于这个插件中立即执行的函数,传入的参数是什么意思

  因为这个立即执行函数是封闭的,所以需要通过传递参数来调用相关的对象。 这里传入了window和document.documentElement供内部使用。 当然,如果这里定义的是一个jquery插件,那么我们就可以传入$或者是jquery了。

问题4这里是如何实现控制字体大小的呢

  非常简单: 就是在载入页面和调整窗口大小的时候,动态设置根元素(html)的值,然后在css中使用rem进行布局,这样就可以完成移动端的适配了。

开始jquery插件

  推荐文章

  1. ;(function($) {
  2. $.fn.accordion = function(options) {
  3. var settings = $.extend({}, {open: false}, options);
  4. return this.each(function() {
  5. var dts = $(this).children('dt');
  6. dts.click(onClick);
  7. dts.each(reset);
  8. if(settings.open) $(this).children('dt:first-child').next().show();
  9. });
  10.  
  11. function onClick() {
  12. $(this).siblings('dt').each(hide);
  13. $(this).next().slideDown('fast');
  14. return false;
  15. }
  16.  
  17. function hide() {
  18. $(this).next().slideUp('fast');
  19. }
  20.  
  21. function reset() {
  22. $(this).next().hide();
  23. }
  24. }
  25. })(jQuery);

  ok! 这就是一个jquery插件了!

  • 第一个分号同样是为了解决压缩到一个文件时可能导致的问题的。
  • 同样是一个立即执行的匿名函数,并且在调用的时候传入了一个jQuery作为参数。这样就可以在其中使用jquery了,所以这就是一个名副其实的jquery插件了。
  • jquery的fn就是扩展插件所必须的,它相当于js中的prototype,所以还是非常重要的~
  • 这里使用了var settings = $.extend({}, {open: false}, options); $.extend 方法参数是一个目标对象和 2 个或多个合并对象。在本示例中,目标对象是一个空 object literal,充当合并对象容器。目标将成为一个包含合并对象值的单一对象(在该案例中是 settings 变量)。第 2 个参数是一个包含默认插件属性的 object literal。第 3 个参数是用户定义的 options 参数。要在一个 HTML 元素上使用 accordion 插件传递 options,如果用户传递的options中也包含了open,那么就会覆盖默认的。
  • 可以看到,在这个插件中我们return了这个对象,这样我们调用了这个扩展的插件之后就可以使用链式调用了。
  • 当然,在参数方面我们不仅可以传递jquery,也可以定义其他的如window、document.documentElement等。

结束

快速创建jquery插件的更多相关文章

  1. 快速开发 jQuery 插件的 10 大技巧(转)

    1. 把你的代码全部放在闭包里面 这是我用的最多的一条.但是有时候在闭包外面的方法会不能调用.不过你的插件的代码只为你自己的插件服务,所以不存在这个问题,你可以把所有的代码都放在闭包里面.而方法可能应 ...

  2. 快速开发 jQuery 插件的 10 大技巧(转)

    转自:http://www.oschina.net/news/41776/jquery-10-tips 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模 ...

  3. 快速开发 jQuery 插件的 10 大技巧

    在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了. ...

  4. 快速开发jQuery插件的10大技巧

    原文链接:http://wiki.itivy.com/?p=36 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & ...

  5. 如何创建一个自定义jQuery插件

    简介 jQuery 库是专为加快 JavaScript 开发速度而设计的.通过简化编写 JavaScript 的方式,减少代码量.使用 jQuery 库时,您可能会发现您经常为一些常用函数重写相同的代 ...

  6. 2014优秀的好用的20款免费jQuery插件推荐

    2013 年最好的 20 款免费 jQuery 插件,世界买家网 www.buyerinfo.biz在这里分享给大家 这些插件对设计者和开发者都有很大的帮助,希望大家能够喜欢:) 现 今互联网市场上提 ...

  7. 2013 年最好的 20 款免费 jQuery 插件

    2013 年最好的 20 款免费 jQuery 插件 oschina 发布于: 2014年01月11日 (8评) 分享到  新浪微博腾讯微博 收藏+99 互联网上面有很多 jQuery 插件,这里我们 ...

  8. jQuery 插件基础

    jQuery 插件基础 翻译 How to Create a Basic Plugin 如果你需要在 jQuery 选择器上执行一系列重复操作, 这时候你需要编写 jQuery 插件. jQuery ...

  9. jQuery 插件写法2

    转载:http://www.xuanfengge.com/jquery-plug-in-written-summary-and-summary-of-writing-object-oriented-m ...

随机推荐

  1. 《Maven实战》笔记-5-pom聚合和继承

    一.聚合 假设有两个模块:account-email和account-persist: 能够使用一条命令就能构建上述两个模块,需要创建一个额外的模块:account-aggregator: 通过acc ...

  2. 多线程学习-基础(四)常用函数说明:sleep-join-yield

    一.常用函数的使用 (1)Thread.sleep(long millis):在指定的毫秒内让当前正在执行的线程休眠(暂停执行),休眠时不会释放当前所持有的对象的锁.(2)join():主线程等待子线 ...

  3. android studio中配置X5 webview时的一个坑

    在接入X5的第二步中,需要配置so文件,这里说一下遇到的坑 1. 需要把demo下载回来,不然你找不到so文件,找到so文件后放到自己相对应的目录下边,自己里面那个目录也没有,所以和文件夹一起复制过去 ...

  4. Owin password

    一.什么是OAuth OAuth是一个关于授权(Authorization)的开放网络标准,目前的版本是2.0版.注意是Authorization(授权),而不是Authentication(认证). ...

  5. Android View部分消失效果实现

    本文来自网易云社区 作者:孙有军 老需求 我们经常会有需求就是View消失的效果,这里我们说的消失往往是全部消失,我们可能采用一个alpha动画,在指定的时间内消失掉View,出现则实现相反的动画.我 ...

  6. P4172 [WC2006]水管局长 LCT维护最小生成树

    \(\color{#0066ff}{ 题目描述 }\) SC 省 MY 市有着庞大的地下水管网络,嘟嘟是 MY 市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的 ...

  7. window.performance

    利用window.performance查看网页性能 一般我们可以通过浏览器的调试工具-网络面板,或者代理工具查看网页加载过程中的各个阶段的耗时.而利用window.performance属性则可以获 ...

  8. github 第三方登录

    第三方登录先了解 OAuth 2.0 OAuth 协议的认证和授权的过程如下: 用户打开我的博客后,我想要通过GitHub获取改用户的基本信息 在转跳到GitHub的授权页面后,用户同意我获取他的基本 ...

  9. C语言中的定义与声明

    什么是定义?什么是声明?它们有何区别? 举个例子: 1 2 A)int i; B)extern int i;(关于extern,后面解释) 哪个是定义?哪个是声明?或者都是定义或者都是声明?我所教过的 ...

  10. 项目中遇到的问题:前台 disabled 与 后台disabled

    TPRI项目流程,点[保存],“人员”服务器端控件,如果在前台disabled设置,则值会丢失:在后台设置disabled就可以.