[WordPress] JQuery のワードプレスの機能

スポンサーリンク

Question

私は引っ張っている髪をこの 1 つ以上。両方とも wp_enqueue_scripts を読み込む別個のファイルで定義された関数があります。各ファイルにラップ間関数

(function($){

})(jQuery);

問題は「関数 xxxx が定義されていません」を得る別のファイルで定義されている 1 つの関数を呼び出すとき私は、スクリプトが正しい順序で読み込まれていると、エラーがないことを確認します。同じファイル内で関数を呼び出すことができ、申し分なく作品しますが、それ doesn’t を別のファイルから呼び出すとき。あるいくつかの並べ替え”Namespace”か何か私が行方不明ですか?

編集: 何が起こっているかを理解する.内部関数を宣言と、(function($)… それではないグローバル スコープ。それ以外の関数を定義する場合それにアクセスできます。だから私の質問は内からグローバル スコープで関数を定義するには、(function($).?

編集 2: 私は何か働くものを得た [ok]。ような関数を宣言私はかどうかが判明:

ShowForm = function(url){
   ...
}

の代わりに

function ShowForm(url){
   ...
}

それ動作します。誰もがなぜ私は関数を宣言する、この方法が私に説明できますか?グローバル スコープで使用できるように、関数を定義する代替方法はありますか?

答え

第一オフあなた jquery 関数スコープを扱っているので、それをすぐに発生した実行コードを匿名関数を呼び出します

(function(){.....} ) //anonymous function syntax

関数内で作成する任意の関数は、関数の外部のことができなくなります。しかし、ここで我々 は正しく言及していない… 関数にそれべきである実際に「関数オブジェクト」関数ではなく、js の変数にオブジェクトを割り当てることができます

MyNewFunction = (function() {......}); // function object now assigned to variable MyNewFunction

第 2 の例では、これは何をやっているようにします

関数オブジェクトの内で (すなわちないを再利用する既に作成されたグローバル変数) のグローバル変数を作成できます。変数の前に var キーワードを使用する場合、変数はローカルになりますスコープ内。

aVariable = 'im global'; //global scope

(function() {
    MyVar= 'im global and can be called outside this function';
    var MyOtherVar= 'im not global and cannot be called outside this function';
    aVariable = 'change this';
});

console.log(MyVar); // global scope = 'im global and can be called outside this function'
console.log(MyOtherVar); // local to above function only scope = undefined
console.log(aVariable); // = global scope (unchanged scope) = 'change this'

したがって関数内のグローバル変数を作成し、関数オブジェクトを割り当てた場合関数オブジェクトが解析時間 (この場合) で呼び出されている関数の作成後に使用可能今すぐ

(function() {
    MyVar= function() {'alert function running'};
});

MyVar(); // works creates alert

Theres 何も関数このように設定すると問題が (すなわち、機能は変わりません他の何かに依存して) 変更することがなく使用するためのものですあなたが改善される場合、コードの可読性あなた自身のためのグローバル スコープの関数を宣言することによって最初の場所では。

http://stackoverflow.com/questions/27462210/wordpress-jquery-functions

スポンサーリンク

Leave a Reply