jQuery:找不到文档准备好的元素

时间:2013-02-05 20:33:44

标签: javascript jquery ajax

我遇到了一个奇怪的Javascript行为:

的index.html

<div id="content">
    <button type="button" onclick="goDownload()">Click</button>
</div>

hello.html的

<div id="myId">
</div>

<script type="text/javascript">
    $(function() {
        doStuff();
    });
</script>

file.js

function goDownload() {
    $.ajax({
        url: "hello.html",
        cache: false,
        success: function (response) {
            $("#content").append(response);
        }
    });        
}

function doStuff() {
    //If I wait a little bit (e.g alert/timer), the below works
    //otherwise it does not

    $("#myId").html("Hello from doStuff()");
}

我知道ajax调用是一个异步请求,但我不知道这在什么时候会成为一个问题。 (我知道我可以在成功回调中做我的doStuff(),但对我来说情况并非如此)。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

$.ajax调用的结果是延迟对象(http://api.jquery.com/category/deferred-object/),因此您可以利用其方法来检测何时完成:

var downloadWaiting;

function goDownload() {
    downloadWaiting = $.ajax({
        url: "hello.html",
        cache: false,
        success: function (response) {
            $("#content").append(response);
        }
    });
}

function doStuff() {
    downloadWaiting.done(function () {
        $("#myId").html("Hello from doStuff()");
    });
}