推荐一款jQuery插件模板


Posted in Javascript onJanuary 09, 2015

我使用jQuery已经有相当长的时间了,并且我会常常为它写一些插件(plugin)。我尝试过用不同的方式去写,现在这个模板是我最喜欢的:

;(function($) {

  // multiple plugins can go here

  (function(pluginName) {

    var defaults = {

      color: 'black',

      testFor: function(div) {

        return true;

      }

    };

    $.fn[pluginName] = function(options) {

      options = $.extend(true, {}, defaults, options);

             

      return this.each(function() {

        var elem = this,

          $elem = $(elem);

 

        // heres the guts of the plugin

          if (options.testFor(elem)) {

            $elem.css({

              borderWidth: 1,

              borderStyle: 'solid',

              borderColor: options.color

            });

          }

      });

    };

    $.fn[pluginName].defaults = defaults;  

  })('borderize');

})(jQuery);

 

//下面是用法

$('div').borderize();

$('div').borderize({color: 'red'});

以下是我喜欢这种模板的原因

1. 你仍然可以访问里面的默认选项,即便它被重写了(简单地通过父属性的访问)

2. 通过修改pluginName即可更改插件的名字。(这种方式对代码压缩也非常有利)

第#1点非常强大,比如说我们希望复写这个方法,但是仍然希望保留原来的方法,我们可以看下面的例子:

$('.borderize').borderize({

    testFor: function(elem) {

        var $elem = $(elem);

        if (elem.is('.inactive')) {

            return false;

        } else {

            // calling "parent" function

            return $.fn.borderize.defaults.testFor.apply(this, arguments);

        }

    }

});

We can even do this with regular properties like this

 

var someVarThatMayBeSet = false;

/* code ... */

 

$('.borderize').borderize({

    color: someVarThatMayBeSet ? 'red' : $.fn.borderize.defaults.color

});

小伙伴们,你们也会喜欢上这款jQuery插件模板的吧,他实在是太灵活了。

Javascript 相关文章推荐
javascript 建设银行登陆键盘
Jun 10 Javascript
一个关于jqGrid使用的小例子(行按钮)
Nov 04 Javascript
非常酷炫的Bootstrap图片轮播动画
May 27 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
浅谈javascript中的 “ && ” 和 “ || ”
Feb 02 Javascript
详解Sea.js中Module.exports和exports的区别
Feb 12 Javascript
JavaScript中数组Array方法详解
Feb 27 Javascript
axios基本入门用法教程
Mar 25 Javascript
前端构建工具之gulp的语法教程
Jun 12 Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 Javascript
详解iframe跨域的几种常用方法(小结)
Apr 29 Javascript
微信小程序入门之绘制时钟
Oct 22 Javascript
JavaScript中Cookie操作实例
Jan 09 #Javascript
使用javascript实现简单的选项卡切换
Jan 09 #Javascript
14个有用的Jquery技巧分享
Jan 08 #Javascript
jQuery中insertBefore()方法用法实例
Jan 08 #Javascript
jQuery中insertAfter()方法用法实例
Jan 08 #Javascript
jQuery中prependTo()方法用法实例
Jan 08 #Javascript
8个超实用的jQuery功能代码分享
Jan 08 #Javascript
You might like
探讨如何把session存入数据库
2013/06/07 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
深入php内核之php in array
2015/11/10 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
js切换光标示例代码
2013/10/10 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
Python数据结构之翻转链表
2017/02/25 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
python3注册全局热键的实现
2020/03/22 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
生日寄语大全
2014/04/08 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
会计师事务所实习证明
2014/11/16 职场文书
会议简讯范文
2015/07/20 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
react合成事件与原生事件的相关理解
2021/05/13 Javascript
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript