jQuery Plugin Design Patterns
って検索したのにコレだ!って情報が出てこなかったので、自分でメモしておく。
みたいなことのメモ。
イマサラ感は気にしない。
書き方は2パターン
見慣れた記法ですね。
jQueryさまさま。
そのほか
基本
お行儀よくするために、ちゃんとスコープはしぼる。
;(function ($, window, document, undefined) { // your plugin here.. })(jQuery, window, document);
競合してないか
どこまで厳密にやるかです。
- $に既に同名で拡張がされてないか
- $.data() とかで要素をマーキングしておく
などすることが多い模様。
return this
特定の要素に対してなんかするとき、チェーンさせたいですよね!ということで。
$(elm).colorRed().addClass('piyo'); // ってできるように $.fn.colorRed = function() { this.css('color', 'red'); return this; // jQueryなやつを返す // return this.css('color', 'red'); でもOK };
複数要素を前提に
jQueryな要素にjQueryなことするだけなら気にしなくてもいいけど、違う場合に困ります。
$.fn.myPlugin = function ( options ) { return this.each(function () { new Plugin(this, options); }); };
基本的にeachしちゃっていいと思う。
オプション
直接は関係ないけど。
var defaultOption = { hoge: 1, fuga: 'piyo' }; $.extend(defaultOption, option);
ってな具合に必要なオプションだけ上書きできるしコードもすっきり。
オプションのネスト具合には注意。