Javascript While Loop每次迭代都会检查DOM

时间:2015-03-23 11:27:58

标签: javascript loops dom

while循环会在每次迭代时加载DOM,还是会像使用DOM一样循环启动?

e.g。

function whileExample(){
    while(a > b){
        $('p').each(function(){
            num++
        });
        return num;
    }
)

这会看到自循环开始以来添加的'p'

2 个答案:

答案 0 :(得分:1)

获取元素的一些DOM方法返回一个实时列表,如果DOM发生更改,它将发生变化,但jQuery在获取元素时会复制列表。

当你循环jQuery对象中的元素时,你正在循环创建jQuery元素时存在的元素。

while循环每次迭代都会创建一个新的jQuery对象,这样就可以获得当时存在的元素,但是当你从循环中返回时,只会有一次迭代。

但请注意,由于没有代码可以更改循环中的DOM,因此在循环期间不可能在DOM中添加任何元素。 Javascript是单线程的,因此在函数运行时没有其他代码可以运行。

答案 1 :(得分:0)

只有一个DOM,以“document”对象为根。它是在页面加载时创建的。 jQuery函数以及在DOM上运行的所有其他函数将在调用DOM时搜索DOM,因此它将在当前文档中找到ALL p。它不会找到删除的那些,它会找到那些添加的。