jQuery, неопределенная функция, если используется в другой функции - PullRequest
1 голос
/ 24 марта 2012

Я пишу 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 Ответ

2 голосов
/ 24 марта 2012

если ваш test() должен быть выполнен немедленно, то сделайте следующее:

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

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

, но test() не будет доступен из внешнего мира таким образом.это несколько «закрыто».если вам нужен тест для немедленного выполнения и все еще быть вызванным другими , сделайте следующее:

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

    var test = (function testFunc() {
       console.log('test init');
       return testFunc;                //return itself to the variable "test"
    }());                              //execute
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...