推荐一款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/Css 文件的代码
Jul 03 Javascript
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 Javascript
简单方法判断JavaScript对象为null或者属性为空
Sep 26 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
Dec 08 Javascript
Angularjs制作简单的路由功能demo
Apr 14 Javascript
详解JavaScript权威指南之对象
Sep 27 Javascript
浅谈javascript中执行环境(作用域)与作用域链
Dec 08 Javascript
关于预加载InstantClick的问题解决方法
Sep 12 Javascript
jQuery实现炫丽的3d旋转星空效果
Jul 04 jQuery
JS实现躲避粒子小游戏
Jun 18 Javascript
JavaScript分页组件使用方法详解
Jul 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
apache php模块整合操作指南
2012/11/16 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
Jquery 扩展方法
2010/05/06 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
深入理解python多进程编程
2016/06/12 Python
Python线性回归实战分析
2018/02/01 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
python matlibplot绘制3D图形
2018/07/02 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
如何完美的建立一个python项目
2020/10/09 Python
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
信息管理专业推荐信
2013/10/29 职场文书
表彰先进的通报
2014/01/31 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
个人工作决心书
2015/09/22 职场文书
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python
浅谈Web Storage API的使用
2021/06/23 Javascript
Go语言 详解net的tcp服务
2022/04/14 Golang