Javascript Ajax回调后设置超时的替代方法
我发现自己经常这样做:Javascript Ajax回调后设置超时的替代方法,javascript,jquery,ajax,settimeout,Javascript,Jquery,Ajax,Settimeout,我发现自己经常这样做: window.onload = function(){ $.get("http://example.com/example.html", function(data) { $('#contentHere').html(data); setTimeout("javaScriptClass.init()", 200); }); } 但是setTimeout似乎有点不太正常(200ms已经是普通用户注意力跨度的三倍多了:)。最好的
window.onload = function(){
$.get("http://example.com/example.html", function(data) {
$('#contentHere').html(data);
setTimeout("javaScriptClass.init()", 200);
});
}
但是setTimeout似乎有点不太正常(200ms已经是普通用户注意力跨度的三倍多了:)。最好的选择是什么
编辑
javaScriptClass.init()作用于ajax调用中加载的DOM对象我认为这里对加载有一些混淆,您可以这样做:
window.onload = function(){
$.get("http://example.com/example.html", function(data) {
$('#contentHere').html(data);
javaScriptClass.init();
});
}
在$('#contentHere').html(数据)之后代码>DOM元素将随时可用。还可以查看附件(如果其他onload
处理程序可能需要附加),如下所示:
$(window).load(function(){
$.get("http://example.com/example.html", function(data) {
$('#contentHere').html(data);
javaScriptClass.init();
});
});
不过,除非您正在等待图像,否则可以在文档中调用此函数。准备好处理程序并尽快启动,从而获得更好的用户体验。为什么会有延迟?@Nick!javaScriptClass.init()作用于ajax调用中加载的DOM对象。它们将在调用.html()
前一行之后立即加载,这是一个同步操作。@Nick我在javaScriptClass.init()
和setTimeout(“javaScriptClass.init()”,200)之间来回切换代码>并得到不同的结果。有了延迟,它就工作了,没有延迟,它就不工作了。那么,我应该重新解释这个问题吗?您是否正在加载内容中的图像,并且这些图像是必需的?这是我唯一能想象的不完全同步的场景。谢谢尼克。我很困惑,但这显然是正确的答案。