【发布时间】:2017-05-30 23:44:52
【问题描述】:
我有一个 Ajax 调用,它返回一段 html 代码,该代码应该替换页面上的旧 html 代码,并赋予它们新的属性。成功动态更改元素后,我想运行另一段 JS 代码,该代码读取并使用动态重新加载的元素的某些属性。但是,JS 更喜欢读取旧数据(就好像它在同步运行一样)。
我发现的唯一解决方法是设置一个计时器,但计时器的延迟时间必须相对较高(300 毫秒)才能保证它始终正确完成。这样做的正确方法是什么?
这是我现在拥有的伪代码。它可以工作,但 300 毫秒的延迟时间很糟糕。
$.post( "ajax/test.html", function( newCode ) {
$("#myDynamicDiv").html(newCode);
setTimeout(function(){
//Use the data that was just stored in #myDynamicDiv
},300);
});
【问题讨论】:
-
我一直这样做,而且效果很好,也许是 ajax 缓存搞砸了你,我总是把它关掉,它有一个全局设置。显然要确保正在读取属性的 JS 位于 post 函数内部和 html 插入下方。
标签: javascript jquery ajax settimeout dynamic-loading