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

在文档上绑定事件并触发它:

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 回答
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 回答