zoukankan      html  css  js  c++  java
  • 我最喜欢的jQuery插件模板

      我使用jQuery已经有相当长的时间了,并且我会常常为它写一些插件(plugin)。我尝试过用不同的方式去写,现在这个模板是我最喜欢的:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    ;(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点非常强大,比如说我们希望复写这个方法,但是仍然希望保留原来的方法,我们可以看下面的例子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $('.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
    });

      你有更好的模板吗?欢迎回复。

      原文 kolodny.github.io

  • 相关阅读:
    zoj 3279 线段树 OR 树状数组
    fzu 1962 树状数组 OR 线段树
    hdu 5057 块状链表
    hdu3487 Play with Chain
    bzoj 1588营业额统计(HNOI 2002)
    poj2823 Sliding Window
    poj2828 Buy Tickets
    poj2395 Out of Hay
    poj3667 Hotel
    poj1703 Lost Cows
  • 原文地址:https://www.cnblogs.com/xiaochao12345/p/4210856.html
Copyright © 2011-2022 走看看