推荐一款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 相关文章推荐
DHTML 中的绝对定位
Nov 26 Javascript
jQuery $.data()方法使用注意细节
Dec 31 Javascript
利用js实现选项卡的特别效果的实例
Mar 03 Javascript
jquery实现省市select下拉框的替换(示例代码)
Feb 22 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
Apr 11 Javascript
JavaScript页面实时显示当前时间实例代码
Oct 23 Javascript
微信小程序 loading 详解及实例代码
Nov 09 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
Oct 22 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
Mar 08 Javascript
LayUI动态设置checkbox不显示的解决方法
Sep 02 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
Sep 02 Javascript
vue-cli4.0多环境配置变量与模式详解
Dec 30 Vue.js
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
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
jquery中get和post的简单实例
2014/02/04 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
python 快速排序代码
2009/11/23 Python
在Python中使用成员运算符的示例
2015/05/13 Python
Python下Fabric的简单部署方法
2015/07/14 Python
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
大码女装:Ulla Popken
2019/08/06 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
学院领导推荐信
2013/10/30 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
承诺书模板
2014/08/30 职场文书
校长四风对照检查材料
2014/09/27 职场文书
2014年残联工作总结
2014/11/21 职场文书
鸟的天堂导游词
2015/01/31 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书
python tqdm用法及实例详解
2021/06/16 Python
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技