推荐一款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基本概念初级讲解论坛贴的学习记录
Feb 22 Javascript
Prototype Number对象 学习
Jul 19 Javascript
js判断iframe内的网页是否滚动到底部触发事件
Mar 18 Javascript
Javascript实现div的toggle效果实例分析
Jun 09 Javascript
浅析JavaScript中浏览器的兼容问题
Apr 19 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
Sep 05 jQuery
Vue.js点击切换按钮改变内容的实例讲解
Aug 22 Javascript
tsconfig.json配置详解
May 17 Javascript
element-ui表格合并span-method的实现方法
May 21 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
Nov 04 Javascript
JavaScript如何实现防止重复的网络请求的示例
Jan 28 Javascript
用javascript制作qq注册动态页面
Apr 14 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+MySQL的聊天室设计
2006/10/09 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
php include类文件超时问题处理
2015/02/06 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
[JS]点出统计器
2020/10/11 Javascript
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
vue实现数据控制视图的原理解析
2020/01/07 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
Python解释执行原理分析
2014/08/22 Python
Python基础入门之seed()方法的使用
2015/05/15 Python
Python构建网页爬虫原理分析
2017/12/19 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
Python3内置模块random随机方法小结
2019/07/13 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
新郎婚宴答谢词
2014/01/19 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
2015元旦节寄语
2014/12/08 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python