jQuery,未定义的函数,如果在不同的函数中使用

时间:2012-03-24 07:48:50

标签: javascript jquery function

我正在编写 jQuery插件,与此类似,

$(this).each(function(){
    $el = $(this).find('.el')
    $el.click(function(){
       test();
    });
    function test() {
       console.log('test init');
    }
});

单击$el时,此工作正常

但是当我使用test()之外的$el.click

$(this).each(function(){
    $el = $(this).find('.el')
    test();
    function test() {
       console.log('test init');
    }
});

我收到类型错误undefined is not a function

PS:我用咖啡编码,语法/拼写不是问题

1 个答案:

答案 0 :(得分:2)

如果您的test()需要立即执行,请执行以下操作:

$(this).each(function(){
    $el = $(this).find('.el')

    (function test() {
       console.log('test init');
    }());                          //the "()" at the end executes the function
});

test() won't be available from the outside world这样。它有点“封闭”。如果你需要测试立即执行并且仍然可以被其他人调用,请执行以下操作:

$(this).each(function(){
    $el = $(this).find('.el')

    var test = (function testFunc() {
       console.log('test init');
       return testFunc;                //return itself to the variable "test"
    }());                              //execute
});