我(基本上)有这段代码 -
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("#loadDiv").load("mypage.html", function(){ alert($("#someText").text()) });
});
</script>
<div id="loadDiv"></div>
然而,警报将显示&#34; undefined&#34;因为html还没有被渲染到div中。
我已经看到了这个问题 - How to wait for jQuery's load function to render loaded content before executing callback function - 杰克的答案对我的情况最好。在我的实际页面上,我有八个这样的,并且延迟两秒仍然有一些在渲染html之前运行。
有没有人比延迟愚蠢时间有更好的建议?
答案 0 :(得分:1)
您应该能够使用setTimeout()
将回复包裹在0
的回调中(浏览器意味着钳位在4
微秒,但不是全部都是这样)。
这会将代码推送到事件队列中,使浏览器有机会在代码执行之前呈现。
答案 1 :(得分:1)
根据the documentation,load
方法在调用函数之前已经等待内容放在元素中:
“如果提供”完整“回调,则在之后执行 已经执行了后处理和HTML插入。“
我已对此进行了测试,并且在回调函数运行时它确实在元素中找到了加载的内容。
如果它在您的代码中不起作用,那么您正尝试做的事情不同于您在问题中显示的内容。
答案 2 :(得分: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();
}
});