Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery和$(document.ready()的计时问题_Javascript_Jquery - Fatal编程技术网

Javascript jQuery和$(document.ready()的计时问题

Javascript jQuery和$(document.ready()的计时问题,javascript,jquery,Javascript,Jquery,当文档准备就绪时,我有以下代码块代码: $(document).ready(function() { createDivs(); // creates some divs with class 'foo'; // iterate $(".foo").each(function(index) { alert(index + " - " + $(this).text()); }); } 我发现“迭代”部分完全忽略了我在createDivs()方法中

当文档准备就绪时,我有以下代码块代码:

$(document).ready(function() {
    createDivs(); // creates some divs with class 'foo';

    // iterate
    $(".foo").each(function(index) {
        alert(index + " - " + $(this).text());
    });
}

我发现“迭代”部分完全忽略了我在createDivs()方法中创建的div!是否有我不知道的时间问题?为什么jquery看不到刚刚创建的div?

时间不是问题。可能
createDivs()
没有将元素添加到DOM?

时间不是问题。也许
createDivs()
没有将元素添加到DOM中?

我发现Javascript在执行代码时就像F1赛车中的公牛。不能让它等待执行任何特定链中的代码

您可能应该创建这样一种情况:createDivs()能够在回调完成后触发任何依赖代码。如果没有看到createDivs代码,很难给您一种实现它的方法

更新


实际上,只有在进行异步调用时才适用(根据我下面的朋友的说法)。

我发现Javascript在执行代码时就像F1赛车中的公牛。不能让它等待执行任何特定链中的代码

您可能应该创建这样一种情况:createDivs()能够在回调完成后触发任何依赖代码。如果没有看到createDivs代码,很难给您一种实现它的方法

更新


实际上,只有在进行异步调用时才适用(根据我下面的朋友的说法)。

根据我的经验,DOM操作有时可能是异步的,可能是由于浏览器的优化,我通常的解决方案是让
createDivs()
返回创建的div,然后使用返回的元素

var divs = createDivs();
$('.foo').and(divs).each(function(){
    //happy fun time
})

根据我的经验,DOM操作有时可能是异步的,可能是由于浏览器的优化,我通常的解决方案是让
createDivs()
返回创建的div,然后使用返回的元素

var divs = createDivs();
$('.foo').and(divs).each(function(){
    //happy fun time
})

你确定createDivs成功地创建了div并将其添加到DOM中吗?你需要在
createDivs()
@justkt-我用Firebug打开页面,我看到div被正确创建了。@Nick-我太傻了,忘记了createDivs()在AJAX回调中创建了div。您确定createDivs成功创建了div并将其添加到DOM中吗?您需要在
createDivs()
@justkt中发布代码-我用Firebug打开页面,我看到了正确创建的div。@Nick-我太傻了,忘记了createDivs()在AJAX回调中创建了div。这个答案更适合作为问题的注释。这个答案更适合作为问题的注释。据我所知,如果你没有做任何异步工作,Javascript应该按顺序执行代码。当然,如果createDivs关闭并在服务器上调用某个东西,并在成功回调中实际创建div或类似的内容,那么一切都是悬而未决的$('.somediv').remove(),您知道JS中的第一手代码序列。我不确定这是否属于您对异步的定义,但当我第一次看到它时,我感到惊讶。这是异步的,动画是按时间间隔执行的。愚蠢的我,createDivs()确实是在AJAX回调中异步创建它们的。据我所知,如果您没有做任何异步工作,Javascript应该按顺序执行代码。当然,如果createDivs关闭并在服务器上调用某个东西,并在成功回调中实际创建div或类似的内容,那么一切都是悬而未决的$('.somediv').remove(),您知道JS中的第一手代码序列。我不确定这是否属于您对异步的定义,但当我第一次看到它时,我感到惊讶。这是异步的,动画是按时间间隔执行的。愚蠢的我,createDivs()确实是在AJAX回调中异步创建它们的。