I am Oliver

Zepto 插件写法

一般是这样的… 比较水, 并没有怎么写过.

我只是把 bootstrap 的 button 组件改了一下, 删掉了 data-api 部分, 感觉这样该够用了。

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

+function ($) {
  'use strict';

  // BUTTON PUBLIC CLASS DEFINITION
  // ==============================

  var Button = function (element, options) {
    this.$element  = $(element);
    this.options   = $.extend({}, Button.DEFAULTS, options);
  }

  Button.DEFAULTS = {
    loadingText: 'loading...';
  }

  Button.prototype.setState = function (state) {};

  Button.prototype.toggle = function () {};


  // BUTTON PLUGIN DEFINITION
  // ========================

  function Plugin(option) {
    return this.each(function () {
      var $this    = $(this),
          lookup   = $.fn.button.lookup,
          instance = lookup[$this.data('bs.button')];

      if (!instance) {
        lookup[++lookup.i] = (instance = new Button(this, options));
        $this.data('bs.button', lookup.i);
      }

      // button method
      // if (option == 'toggle') {
      //   data.toggle();
      // } else if (option) {
      //   data.setState(option);
      // }
    });
  }

  var old = $.fn.button;

  $.fn.button             = Plugin;
  $.fn.button.lookup      = { i: 0 };
  $.fn.button.Constructor = Button;


  // BUTTON NO CONFLICT
  // ==================

  $.fn.button.noConflict = function () {
    $.fn.button = old;
    return this;
  };

} (Zepto);
打赏