Jquery事件处理程序仅适用于匿名函数?

时间:2016-05-13 23:45:09

标签: javascript jquery anonymous-function

我有一些jQuery在单击按钮时会更改一些文本。在匿名函数中实现时,此代码可以正常工作(nn_list是全局定义的字符串数组,nn_flag预定义为false):

$(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());

有人可以向我解释这两个使匿名功能有效的实现之间的变化,而不是其他的吗?

2 个答案:

答案 0 :(得分:3)

您需要传递对该函数的引用,而不是调用它:

$(document).ready(main);

答案 1 :(得分:3)

传递它,不要调用它。请注意以下内容......

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

=&GT;

$(document).ready(main);