2016-05-13 1 views
1

У меня есть jQuery, который меняет текст, когда нажимается кнопка. Этот код работает отлично реализован в анонимной функции (nn_list является глобально определенным массивом строк, nn_flag предопределена как ложные):Обработчик событий Jquery работает только с анонимной функцией?

$(document).ready(function(){ 
    $("#nn_button").click(function(){ 
     $('.nickname').empty(); 

     var random_name = nn_list[Math.floor(Math.random() * nn_list.length)]; 
     console.log(random_name); 
     $('.nickname').append("<p>" + random_name + "</p>"); 
    }); 
}); 

Но он не работает (не меняет текст), когда я реализую это как не анонимная функция:

var main = function(){ 
    $("#nn_button").click(function(){ 
     $('.nickname').empty(); 

     var random_name = nn_list[Math.floor(Math.random() * nn_list.length)]; 
     console.log(random_name); 
     $('.nickname').append("<p>" + random_name + "</p>"); 
    }); 
} 
$(document).ready(main()); 

Может кто-нибудь объяснить мне, что изменения между этими двумя реализациями, что делает анонимную работу функции, но не другие?

ответ

3

Вы должны передать ссылку на эту функцию, а не называть его:

$(document).ready(main); 
3

Просто передать его, не вызывать его. Обратите внимание на следующее ....

$(document).ready(main()); 

=>

$(document).ready(main); 
+0

* Facepalm * Имеет смысл, когда я думаю об этом. Спасибо за быстрый ответ. – ViggyNash