推荐一款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 相关文章推荐
页面版文本框智能提示JS代码
Nov 20 Javascript
Jquery 高亮显示文本中重要的关键字
Dec 24 Javascript
js取滚动条的尺寸的函数代码
Nov 30 Javascript
JavaScript计算两个日期时间段内日期的方法
Mar 16 Javascript
JavaScript类型系统之Object详解
Jan 07 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
Aug 26 Javascript
javascript宿主对象之window.navigator详解
Sep 07 Javascript
浅谈vue父子组件怎么传值
Jul 21 Javascript
微信小程序开发背景图显示功能
Aug 08 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
Jun 18 Javascript
js+html实现点名系统功能
Nov 05 Javascript
微信小程序实现转盘抽奖
Sep 21 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中随机显示图片的函数代码
2011/06/23 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
php利用header函数下载各种文件
2016/08/24 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
Python实现查找系统盘中需要找的字符
2015/07/14 Python
python3实现磁盘空间监控
2018/06/21 Python
pandas 层次化索引的实现方法
2019/07/06 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
python3正则模块re的使用方法详解
2020/02/11 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
weblogic面试题
2016/03/07 面试题
实习自我鉴定
2013/12/15 职场文书
法务专员岗位职责
2014/01/02 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
浅谈redis缓存在项目中的使用
2021/05/20 Redis
python分分钟绘制精美地图海报
2022/02/15 Python
SQL中的连接查询详解
2022/06/21 SQL Server