0

インターネットで見つけたスライドショー システムを使用し、少し調整してみました。そこには 2 つの js ファイルがあり、それぞれが次のような関数で構成されています。

(function($) {
    $.file1 = function(data, vData) 
    {
       //function aaa
       //function bbb
       //function ccc
    }
})(jQuery);

(function($) {
    $.file2 = function(data, vData) 
    {
       //function eee
       //function fff
       //function gig
    }
})(jQuery);

関数 bbb 内から関数 eee をトリガーするにはどうすればよいですか?

これらを bbb 関数内から試しましたが、うまくいきませんでした:

eee();
$.file2.eee();

変数を返そうとしているのではなく、関数をトリガーする必要があるだけです。

ご協力ありがとうございました。

4

3 に答える 3

1

関数を他のスコープに公開する必要があります。

(function($) {
    $.file1 = function(data, vData) {
       //function aaa
       //function bbb
       //function ccc
       return {
           aaa: aaa,
           bbb: bbb,
           ccc: ccc
       };
    }
})(jQuery);

$.file1().aaa();
$.file1().bbb();
$.file1().ccc();

これは、関数を定義するための非常に厄介なパターンであることに注意してください。このパターンで何を達成しようとしているのかは完全には明らかではありません。IIFEを使用したほうがよい場合があります。

var thing = (function($) {
    //function aaa
    //function bbb
    //function ccc

    return {
        aaa: aaa,
        bbb: bbb,
        ccc: ccc
    };
})(jQuery);

thing.aaa();
thing.bbb();
thing.ccc();
于 2012-08-15T15:26:13.160 に答える
1

皆様のご協力に感謝いたします。

私がしたことはこれです: 呼び出し関数 bbb 内 (ファイル 2) に、これを追加しました:

$.file1.triggerEee();

ファイル 1 ($.file1) のメイン関数内に、これを追加しました。

$.file1.triggerEee=function(){eee();};

それはトリックをしました。

どうもありがとうございました。

于 2012-08-15T16:10:17.143 に答える
0

これら 2 つの関数 jquery 呼び出し内では、メソッドを参照するだけで、そこに実装しないでください。他の場所で実装すると、参照が非常に簡単になります。

于 2012-08-15T15:24:13.193 に答える