0

我(基本上)有这个代码 -

<script type="text/javascript" language="javascript">
    $(document).ready(function() {
        $("#loadDiv").load("mypage.html", function(){ alert($("#someText").text()) });
    });
</script>
<div id="loadDiv"></div>

但是,由于 html 尚未呈现到 div 中,因此警报将显示“未定义”。

我已经看到了这个问题——如何在执行回调函数之前等待 jQuery 的加载函数来渲染加载的内容——杰克的回答是最适合我的情况。在我的实际页面上,我有 8 个,延迟两秒,在呈现 html 之前仍有一些在运行。

有没有人有比增加延迟到愚蠢时间更好的建议?

4

3 回答 3

1

您应该能够将代码包装在setTimeout()具有超时时间的回调中0(浏览器旨在以4微秒为单位进行钳制,但并非所有浏览器都这样做)。

这会将代码推送到事件队列中,让浏览器有机会在代码执行之前进行渲染。

于 2012-06-26T11:21:51.853 回答
1

根据文档,该load方法在调用函数之前已经等待将内容放入元素中:

“如果提供了“完成”回调,则在执行后处理和 HTML 插入后执行。”

我已经对此进行了测试,它确实在回调函数运行时在元素中找到了加载的内容。

如果它在您的代码中不起作用,那么您正在尝试做的不是您在问题中显示的内容。

于 2012-06-26T11:47:43.213 回答
0

您可以将 html 设置为空(如果在加载请求时 div 中没有其他 html 元素)。成功(完成事件)后,您加载内容(现在我不知道响应是 html 还是文本,我已经按照您的代码完成了示例)。如果请求失败,您还可以设置预定义文本。

检查此链接以获取更多信息jquery\load,但这应该可以工作

$("#loadDiv").load("mypage.html", function(response, status, xhr) {
  if (status == "success") {
    $("#loadDiv").html("");
  }
  else if(status == "complete"){
          $("#loadDiv").text();
   }
});
于 2012-06-26T11:28:51.160 回答