0

私は古いバージョンの Joomla から Wordpress にテンプレートを持ち込んでおり、他の関数を参照するメインで使用する必要があるかなりの数の JavaScript ファイルを取得しています。これらのファイルはすべて左右中央に jQuery を使用し、Wordpress はデフォルトで noconflict を使用するため、各 js ファイルを次のようにラップするのは簡単だと思いました。

(function($){
....my code...
})(jQuery);

私が得る問題は、ファイル間で呼び出される関数の範囲に関するものです。たとえば、次のようになります。

ファイル 1

(function($){
    $(document).ready(function(){
        mainmenu();
    });
})(jQuery);

ファイル 2

(function($){
    function mainmenu(){
        alert("hello");
    }
})(jQuery);

これは、「キャッチされていない ReferenceError: mainmenu が定義されていません」というエラーが表示される問題です。関数を参照するのは簡単なことだとわかっていますが、おそらく「Doh」の瞬間であることがわかりません。どんな助けでも大歓迎です。はい、「$」を見つけて「jQuery」に置き換えることができることは知っていますが、それを行う方法があるに違いないと思いましたか?

4

1 に答える 1

2

これはmainmenu、2 番目のファイルの無名関数内のクロージャー関数であるためです。したがって、file1 では使用できません。

考えられる解決策の 1 つは、それをグローバル関数にして、グローバル スコープで使用できるようにすることです。

(function($){
    window.mainmenu = function (){
        alert("hello");
    }
})(jQuery);
于 2013-08-08T10:24:37.897 に答える