2013-10-05 118 views
1

不能在網上找到一個很好的例子,所以我試圖更新一個支持AMD的插件。我在我的精彩插件模板中添加了一些代碼,但我不確定這是否正確。支持AMD的jQuery插件

有關添加這一個插件,將是很好的任何信息(我仍然在學習)

所以這是使用AMD支持的好辦法?

;(function (factory) { 
    if (typeof define === 'function' && define.amd) { 
     // AMD. Register as an anonymous module. 
     define(['jquery'], factory); 
    } else { 
     // Browser globals 
     factory(jQuery); 
    } 
}(function($, window, document, undefined){ 

    //"use strict"; // jshint ;_; 

    var pluginName = 'coolPlugin'; 

    function Plugin(element, options){ 

     this.obj = $(element); 
     this.o = $.extend({}, $.fn[pluginName].defaults, options); 

     this.init(); 
    }; 

    Plugin.prototype = { 

     init: function(){ 

      var self = this; 

     }, 

     _private: function(param){ 
      var self = this; 
     }, 

     destroy: function(){ 
      $.removeData(this.obj, this.pluginName);   
     } 

    }; 

    $.fn[pluginName] = function(option, param) { 
     return this.each(function() { 
      var $this = $(this); 
      var data = $this.data(pluginName); 
      var options = typeof option == 'object' && option; 
      if (!data){ 
       $this.data(pluginName, (data = new Plugin(this, options))) 
      } 
      if (typeof option == 'string'){ 
       data[option](param); 
      } 
     }); 
    }; 

    $.fn[pluginName].defaults = { 
     option1: 'helloooo' 

    }; 


})(jQuery, window, document)); 

回答

1

有幾個方法可以做到這一點,但我會說你的示例代碼是美麗的地方上。只有區別我會做,而不是使用init方法只是簡單地使用插件構造函數。

如果您想要另一個示例,我在this jquery plugin中使用了AMD。