推荐一款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之大字符串的连接的StringBuffer 类
May 08 Javascript
javascript replace方法与正则表达式
Feb 19 Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 Javascript
纯jquery实现模仿淘宝购物车结算
Aug 20 Javascript
遍历json 对象的属性并且动态添加属性的实现
Dec 02 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
Mar 02 Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 Javascript
Vue刷新修改页面中数据的方法
Sep 16 Javascript
Vue代码整洁之去重方法整理
Aug 06 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 Javascript
layui 监听select选择 获取当前select的ID名称方法
Sep 24 Javascript
怎么理解wx.navigateTo的events参数使用详情
May 18 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
PHP 翻页 实例代码
2009/08/07 PHP
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
layui实现数据分页功能
2019/07/27 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
小程序实现上下切换位置
2020/11/16 Javascript
Python生成随机数的方法
2014/01/14 Python
Python的多态性实例分析
2015/07/07 Python
Python常用库推荐
2016/12/04 Python
理解python中生成器用法
2017/12/20 Python
python实现图书管理系统
2018/03/12 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
C#面试题
2016/05/06 面试题
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
给交警的表扬信
2014/01/12 职场文书
投诉书范文
2015/07/02 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
python小程序之飘落的银杏
2021/04/17 Python
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang