推荐一款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 相关文章推荐
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
Jun 06 Javascript
详解jquery中$.ajax方法提交表单
Nov 03 Javascript
javascript中使用正则表达式清理table样式的代码
Apr 01 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
May 25 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
Aug 29 Javascript
详解Vue如何支持JSX语法
Nov 10 Javascript
JavaScript体验异步更好的解决办法
Jan 08 Javascript
webpack引入eslint配置详解
Jan 22 Javascript
vue中动态绑定表单元素的属性方法
Feb 23 Javascript
详细教你微信公众号正文页SVG交互开发技巧
Jul 25 Javascript
vue实现数字滚动效果
Jun 29 Javascript
Javascript类型判断相关例题及解析
Aug 26 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
PHP小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
php笔记之常用文件操作
2010/10/12 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
jquery验证表单中的单选与多选实例
2013/08/18 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
javascript的几种写法总结
2016/09/30 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
小程序实现搜索框
2020/06/19 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
python计算牛顿迭代多项式实例分析
2015/05/07 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
css3学习心得分享
2013/08/19 HTML / CSS
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
电信专业毕业生推荐信
2013/11/18 职场文书
运动会开幕词
2015/01/28 职场文书
房地产项目合作意向书
2015/05/08 职场文书
证婚人致辞精选
2015/07/28 职场文书
节水宣传标语口号
2015/12/26 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python