2016-11-03 17 views
1

私はプラグインを使用しています(この例ではselectricです)。私は、製品のページにプラグインのjavascriptファイルを読み込むだけです。jQuery(...)。jsファイルがロードされていないため、プラグインは関数ではありません

私が使用するコードは:jQuery('.myselectpicker').selectric({});であり、カスタムJavaScriptファイルにあります。すべてのページに魔法使いがロードされています。

他のページから製品ページに行くと、jQuery(...).selectric is not a functionというエラーが発生します。

プラグインのjavascriptファイルが頭に含まれていないため、エラーが表示される理由を理解しています(製品ページのみ)。

しかし、製品ページ以外のページでエラーを返さないように、jQuery('.myselectpicker').selectric({});コードの周りに置くことができるものはありますか?
プラグインjavscriptファイルに、または製品ページにのみロードされた別のjavascriptファイルにコードを追加したくないです。
パフォーマンス上の理由から、すべてのページタイプにすべてのjavascriptファイルを含めたくありません。

答えて

1

あなたはjQueryのisFunction機能を使用することができます - selectricがロードされているかどうかを確認するためにhttps://api.jquery.com/jQuery.isFunction/

// Will trigger selectric() function only if it's lib included 
if($.isFunction($.fn.selectric)){ 
    jQuery('.myselectpicker').selectric({}); 
} 
+0

まさに私が探していたものでした。 'isFunction'関数について知りませんでした。 – FamousWolluf

0

代替はつまり、ページ上の任意の要素がそれを必要とするかどうかを確認することです。

if (jQuery('.myselectpicker').length > 0) 
    jQuery('.myselectpicker').selectric({}); 

この意志エラーを出す - これはisFunctionと組み合わせることができます(他の答えを見て、ここで繰り返す必要はありません)。しかし、プラグインを必要としているが、欠落しているページを知らせます。警告。

関連する問題