带参数的JQuery回调 - 新手

时间:2012-04-20 13:56:36

标签: javascript jquery

因此,在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)才能使其正常运行?我错过了什么吗?

2 个答案:

答案 0 :(得分:7)

关键在于您发布的链接的说明:

  

匿名函数只做一件事:调用myCallBack,在外部作用域中使用param1和param2的值

这基本上是说先前已定义param1param2变量(外部范围):

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