0

これがコードです

test ('e');
function test(e) {
    test2(e); //undefined
}

(function ($) {
    function test2(e) {
        alert('test');
    }
})

何かの制限があるので、私はこのように呼ばなければなりません。誰もが知っていますか?

4

3 に答える 3

1

できません。関数test2はクロージャーで定義されています。そのスコープ内でのみ関数を呼び出すことができます。

于 2013-03-13T03:11:03.657 に答える
0

test2匿名関数の外部で宣言することにより、次のことができます。

var test2;                     //Declare test2 in global
(function ($) {
    test2 = function (e) {     //define test2 
        alert('test');         //because test2 was declared in global,
    };                         // it will stay global.
})(jQuery);

test('e');                     //Call test

function test(e) {
    test2(e);                  //Since test2 can be access anywhere in your code,
}                              //it is now defined.

デモ: http: //jsfiddle.net/DerekL/LEZkt/

于 2013-03-13T03:25:15.400 に答える
0

ドキュメントのイベントをバインドしてトリガーします。

function test(e) {
        var param=1;
            param2=4;
        jQuery(document).trigger('mytest2',[param,param2]); 
    }
(function ($) {
    $(document).bind('mytest2',test2);    
    function test2(event,param,param2) {
        alert('test '+param+' '+param2);
    }
})(jQuery)
setTimeout(test,2000);

http://jsfiddle.net/oceog/CzNKu/

于 2013-03-13T03:14:42.660 に答える