0

使用下面的代码,单击按钮不会调用 handleData() 函数,如果我使用匿名函数方式(在 /* */ 内),它可以工作。

有人可以解释问题是什么吗?以及如何解决?我想从 $(document).ready(...) 调用全局函数。

<html>
<head>
<script src="js/jquery/jquery-1.7.2.min.js"></script>

<script>
    function handleData(data, status) {
        $("#p1").text(data);
    };

    $(document).ready(function() {

        $("button").click(function() {
            $.get("testAsync?name=value", handleData(data, status));
        });

        /*
        $("button").click(function() {
            $.get("testAsync?name=value", function(data, status) {
                $("#p1").text(data);
            });
        });
         */
    });
</script>
</head>
<body>
    <button>Send an HTTP GET</button>
    <p id="p1"></p>
</body>
</html>
4

2 回答 2

5

该函数被立即调用,因为你有(arguments)它。

由于参数是有序的,只需handleData单独传递。

于 2013-01-04T17:48:12.747 回答
4

将函数调用从

$.get("testAsync?name=value", handleData(data, status));

$.get("testAsync?name=value", handleData);

在第一种情况下,您将立即执行该函数..只需传入函数指针,它就会按预期工作..

于 2013-01-04T17:48:18.610 回答