特定のプラグインが使用可能かどうかを確認する方法はありますか?
他のプラグインがロードされていることに依存するプラグインを開発する場合を想像してください。
たとえば、jQuery ValidationプラグインがdateJSライブラリを使用して、与えられた日付が有効かどうかをチェックするようにしたいと思います。jQuery Valdationプラグインで、dateJSが利用可能かどうかを検出する最善の方法は何でしょうか?
一般的に、jQueryプラグインはjQueryスコープ上の名前空間です。名前空間が存在するかどうか、簡単なチェックを実行することができます。
if(jQuery().pluginName) {
//run plugin dependent code
}
しかし、dateJsはjQueryのプラグインではありません。javascriptの日付オブジェクトを変更/拡張するもので、jQueryの名前空間として追加されるものではありません。必要なメソッドが存在するかどうかを確認することは可能です。
if(Date.today) {
//Use the dateJS today() method
}
しかし、このAPIがネイティブのDate APIと重複している問題に遭遇する可能性があります。
適切なjQueryプラグイン(fn名前空間を拡張するもの)について話している場合、プラグインを検出する適切な方法は次のとおりです。
if(typeof $.fn.pluginname !== 'undefined') { ... }
または、すべてのプラグインがtrueと同等の値を持つことがほぼ保証されているため、短いプラグインを使用できます。
if ($.fn.pluginname) { ... }
ところで、プラグインの周りの奇妙に見えるラッパーが示すように、$とjQueryは交換可能です。
(function($) {
//
})(jQuery))
閉鎖。
(function($) {
//
})
パラメータとして、そのクロージャーに「合格」jQueryを呼び出すとすぐに続きます。
(jQuery)
クロージャーの$はjQueryに設定されています。
私は、あなたのプラグインにDateJSライブラリをバンドルし、それを行ったという事実を文書化することを強くお勧めします。 依存関係を探し出すことほど、イライラすることはありません。
とはいえ、法的な理由から、必ずしもすべてをバンドルすることができないかもしれません。 また、用心して Eran Galperin's answer を使ってプラグインの存在を確認することは決して悪いことではありません。