jQuery で 独自の プラグイン を 作成、開発 しようと思ったので、その方法について少し調べてみました。 ここでは、jQuery プラグイン の 作成方法 についていくつかまとめます。
目次
基本形
まずは最もシンプルなプラグインのコード。 このままだと、 $ が jQuery である保証がなかったり、 $ が別物で $.fn が undefined だったり…
$.fn.[関数名] = function () { // 拡張するコードを実装 };
メソッドチェーン
上述の コード では メソッドチェーン が利用できません。 戻り値を設定することで メソッドチェーン を利用できるようにします。
$.fn.[関数名] = function () { // 拡張するコードを実装 // メソッドチェーンの有効化 return this; };
無名関数に取り込んだ形
基本形では変数がグローバルに配置されてイロイロとまずいので、無名関数に取り込んで、$ = jQuery
を保証します。
また、window
や document
をローカル変数化することで "気持ち" 高速化しています。
undefined
は上書きできるので、 変数化することで undefined
を保証します。
このコードは「各要素に対する処理はないが、何か決まった処理を行う」場合に利用できる形になります。
(function (window, document, $, undefined) { $.fn.[関数名] = function () { // 拡張するコードを実装 // メソッドチェーンの有効化 return this; }; })(window, document, jQuery);
再帰的に要素を拡張する形
jQuery ではメソッドチェーンを一般的に使うので、プラグインでもそのやり方にならいます。 jQuery で指定される要素は複数なので、 each 関数でそれぞれの要素に対して実装を適用していきます。
参考までに 各スコープにおける this が何かを「メモ」として記載しました…念のため。
このコードは「各要素に対して何か決まった処理を行う」場合に利用できる形になります。
(function (window, document, $, undefined) { $.fn.[関数名] = function () { // 拡張するコード(各要素に依存しないコード)を実装 // メモ:この function スコープ内の this は jQuery // メソッドチェーンの有効化 return this.each(function (index) { // 各要素に対する実装 // メモ:この function スコープ内の this は DOM要素 }); }; })(window, document, jQuery);
参考記事
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!