Javascript 在jQuery加载命令之后,有没有办法强制等待直到html被呈现到div中?
我(基本上)有这个代码-Javascript 在jQuery加载命令之后,有没有办法强制等待直到html被呈现到div中?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我(基本上)有这个代码- <script type="text/javascript" language="javascript"> $(document).ready(function() { $("#loadDiv").load("mypage.html", function(){ alert($("#someText").text()) }); }); </script> <div id="loadDiv"></di
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("#loadDiv").load("mypage.html", function(){ alert($("#someText").text()) });
});
</script>
<div id="loadDiv"></div>
$(文档).ready(函数(){
$(“#loadDiv”).load(“mypage.html”,function(){alert($(“#someText”).text())});
});
但是,警报将显示“undefined”,因为html尚未呈现到div中
我见过这个问题,杰克的回答对我来说是最好的。在我的实际页面上,我有八个这样的页面,在呈现html之前,它们中的一些仍然在运行,只需两秒钟的延迟
除了将延迟增加到愚蠢的时间之外,还有谁有更好的建议吗?您应该能够在回调中使用
setTimeout()
来包装代码,超时时间为0
(浏览器应该限制在4
微秒,但并非所有浏览器都这样做)
这会将代码推送到事件队列中,使浏览器有机会在执行代码之前进行渲染。您可以将html设置为空(如果加载请求时div中没有其他html元素)。
成功(完成事件)后,加载内容(现在我不知道响应是html还是文本,我已经按照您的代码完成了示例)。
如果请求失败,还可以设置预定义文本
查看此链接了解更多信息,但这应该是可行的
$("#loadDiv").load("mypage.html", function(response, status, xhr) {
if (status == "success") {
$("#loadDiv").html("");
}
else if(status == "complete"){
$("#loadDiv").text();
}
});
根据,在调用函数之前,load
方法已经在等待将内容放入元素中:
如果提供了“完整”回调,则在
已执行后处理和HTML插入。”
我已经对此进行了测试,当回调函数运行时,它确实在元素中找到了加载的内容
如果它在您的代码中不起作用,则表示您正在尝试执行与问题中显示的内容不同的操作。我曾尝试过延迟250+的setTimeout,但不断出现错误(我在实际代码中加载了一个函数),现在又尝试了一次,效果非常好。。。。不知道我以前做错了什么,你是对的。我在调用另一个函数;当我最初收到错误时,我已经失去了我正在做的事情,但我认为我正在做类似
$(“#loadDiv”).load(“mypage.html”,myFunction())
而不是$(“#loadDiv”).load(“mypage.html”,function(){myFunction()})代码>