文档准备好后,我有以下代码块代码:
$(document).ready(function() {
createDivs(); // creates some divs with class 'foo';
// iterate
$(".foo").each(function(index) {
alert(index + " - " + $(this).text());
});
}
我发现“iterate”部分完全错过了我在createDivs()方法中创建的div!我不知道有什么时间问题吗?为什么jquery没有看到刚刚创建的div?
答案 0 :(得分:1)
根据我的经验,DOM操作有时可能会异步,可能是由于浏览器的优化,我通常的解决方案是让createDivs()
返回创建的div然后使用返回的元素
var divs = createDivs();
$('.foo').and(divs).each(function(){
//happy fun time
})
答案 1 :(得分:0)
时机不是问题。也许createDivs()
不会将元素添加到DOM中?
答案 2 :(得分:0)
我发现在执行代码时,Javascript就像F1赛车中的公牛一样。没有让它等待在任何特定链中执行代码。
您应该创建一种情况,即createDivs()在完成相对于回调的完成后能够触发任何相关代码。如果没有看到createDivs代码,很难为您提供实现它的方法。
更新
真的只适用于你正在进行异步通话(根据我下面的朋友的说法)。