【问题标题】:Jquery event handler works only with anonymous function?Jquery 事件处理程序仅适用于匿名函数?
【发布时间】:2016-05-13 23:45:08
【问题描述】:

我有一些 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());

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

【问题讨论】:

    标签: javascript jquery anonymous-function


    【解决方案1】:

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

    $(document).ready(main);
    

    【讨论】:

      【解决方案2】:

      只是传递它,不要调用它。请注意以下几点......

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

      =>

      $(document).ready(main);
      

      【讨论】:

      • facepalm 非常有道理,一旦我想到它。感谢您的快速回答。
      猜你喜欢
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 2012-09-03
      • 2020-03-21
      • 1970-01-01
      • 2013-10-02
      相关资源
      最近更新 更多