参考:
[1] http://d.hatena.ne.jp/cyokodog/20091126/define_plugin01
-> 2.7 実装を prototype オブジェクトで定義
[2] http://logicbox.net/jquery/simplyscroll/
[3] https://gist.github.com/maepon/4754210[4] http://blog2.jamadam.com/?p=115
1.関数のプラグイン[1] -> 1.2 複数の関数を定義
- (function($){
- $.plugin = {
- hoge : function(){
- //...
- },
- fuga : function(){
- //...
- }
- }
- })(jQuery);
2.メソッドのプラグイン
[1] と[2]のsimlyscroll のコードを手本にした。
コンストラクタを作成し(下の例ではPlugin)、以下のテンプレートにはめ込んでプラグインを作成する。
[4]に公式な方法も載っているが、[2]でも使われているので、下記でも問題ないと思う。
尚、以下ではコンストラクタ雰囲気を残すために、myPluginでなく、Pluginとしてあるが、[1][2]では同じ名前を使っている。
コンストラクタを作成し(下の例ではPlugin)、以下のテンプレートにはめ込んでプラグインを作成する。
[4]に公式な方法も載っているが、[2]でも使われているので、下記でも問題ないと思う。
尚、以下ではコンストラクタ雰囲気を残すために、myPluginでなく、Pluginとしてあるが、[1][2]では同じ名前を使っている。
プラグインコードのテンプレート
- (function($) { // 無名関数でラップしてプラグインを独立させておく。jQueryキーワードの代わりにドル記号($)を使用する。
- $.fn.myPlugin = function(opts) { // プラグインを定義する。
- return this.each(function() { // each();で回して全ての要素に対して同様に処理していく
- new $.Plugin(this,opts);
- });
- };
- var defaults = { // オプション(opts)のデフォルト値を定義
- opts1: 0,
- opts2: 0,
- //
- //
- };
- $.Plugin = function(elements, opts){ // コンストラクタの定義
- this.opts = $.extend({}, defaults, opts); // デフォルトオプションと渡されたオプションのマージ
- this.$id = $(elements); // などなど、中身を記載
- //
- //
- };
- $.extend($.Plugin.prototype,{ // プロトタイプを定義
- proto1: function() {
- //
- //
- },
- proto2: function() {
- //
- //
- },
- //
- //
- });
- })(jQuery);
プラグインの使用例
- $(function() {
- $("#id名").myPlugin({
- opts1: 800,
- //
- //
- });
- });