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

标签 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());

有人可以向我解释这两个实现之间的哪些变化使匿名函数起作用,但另一个不起作用吗?

最佳答案

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

$(document).ready(main);

关于javascript - Jquery 事件处理程序仅适用于匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37220892/

相关文章:

javascript - 如何在不使用匿名回调参数的情况下访问 jQuery 事件

javascript - 如果选中复选框,则将值分配给旁边的输入字段

javascript - 使用 Flexbox 使用 overflow-x 使子 div 宽度为容器的 100%

javascript - Jquery Sortable 和 Draggable 在父子框架之间

javascript - 使用这段代码你能实现什么目的?

javascript - 模糊事件 : get the element clicked from inside the blur event

javascript - JavaScript 匿名函数中的 this 值

c# - 委托(delegate)、Lambda、Action、Func、匿名函数

jQuery 大于非选择器?

javascript - 在 jquery 函数中添加延迟