【问题标题】:why I cannot call outside function from $(document).ready为什么我不能从 $(document).ready 调用外部函数
【发布时间】:2013-01-05 01:48:18
【问题描述】:

使用下面的代码,点击按钮不会调用 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>

【问题讨论】:

  • 那是因为它需要一个函数而不是函数调用。如果 handleData 返回一个函数,它也可以工作

标签: javascript jquery document


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    更改函数调用

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

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

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

    【讨论】:

    • @huican .. 很高兴能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 2011-03-23
    • 2010-12-23
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多