因此,在jQuery basic pages的底部附近,它给出了这个示例,请注意匿名function()
如何没有参数。引用JQuery页面说
匿名函数只做一件事:调用myCallBack,在外部作用域中使用param1和param2的值。
$.get('myhtmlpage.html', function(){
myCallBack(param1, param2);
});
所以,我根据this example
尝试了一下我的代码是这样的,类似的东西,在第10行,我有一个匿名function(result)
,但我需要添加参数“结果”不能只是function()
,如JQuery建议的那样网站,或它不会工作:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var GetResults = function (result) {
$("div").html(result);
}
$("button").click(function () {
$.get("demo_ajax_load.txt", function (result) {
GetResults(result);
});
});
});
</script>
</head>
<body>
<div>
<h2>Let AJAX change this text</h2>
</div>
<button>Change Content</button>
</body>
</html>
我的问题是,为什么JQuery页面说只有function()
没有参数?我必须添加function(result)
才能使其正常运行?我错过了什么吗?
答案 0 :(得分:7)
关键在于您发布的链接的说明:
匿名函数只做一件事:调用myCallBack,在外部作用域中使用param1和param2的值
这基本上是说先前已定义param1
和param2
变量(外部范围):
$("button").click(function () {
var param1 = "something";
var param2 = "something else";
$.get('myhtmlpage.html', function(){
myCallBack(param1, param2); // this uses the previously declared variables
});
});
在JavaScript中,当您调用函数myfunc("some text")
时,实际函数可以定义为function myfunc(var1) {
或function myfunc() {
,第一个示例只是正式声明第一个参数的变量名称。
function myfunc() {
alert(arguments[0]);
}
myfunc("some text");
使用arguments
数组未正式声明的参数... see this doc on MDN
答案 1 :(得分:1)
你需要已经定义了变量,以便在这样的闭包中使用它们。由于get
函数将结果放入匿名函数的第一个参数中,因此如果要对其执行任何操作,则需要将result
放在其中以捕获它。
尝试此操作:再次移除result
参数,并在代码的开头添加result="Hello World";
。