从jquery命名空间外部调用jquery命名空间中的函数

时间:2013-03-13 03:07:10

标签: javascript jquery

这是代码

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

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

由于某些限制,我必须这样打电话。有人知道吗?

3 个答案:

答案 0 :(得分:1)

你不能,函数test2已在闭包中定义,你只能调用该范围内的函数。

答案 1 :(得分: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/

答案 2 :(得分: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/