参考:
[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, // // }); });