Jquery 事件处理程序仅适用于匿名函数?
Jquery event handler works only with 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);
只传递它,不要调用它。请注意以下事项....
$(document).ready(main());
=>
$(document).ready(main);
我有一些 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);
只传递它,不要调用它。请注意以下事项....
$(document).ready(main());
=>
$(document).ready(main);