gpt4 book ai didi

javascript - 如果在循环内更改 DOM,则 jQuery each() 行为

转载 作者:行者123 更新时间:2023-11-30 13:36:13 25 4
gpt4 key购买 nike

使用 each() 循环时 jquery 的行为是什么?是吗:

  1. 寻找第一个对象,执行函数,寻找下一个对象...
  2. 将所有对象收集到容器中,然后对每个对象执行函数
  3. 其他(具体是什么?)

相关示例:

<div id="a">
A
<div id="b">
B
</div>
</div>
<div id="c">
C
</div>

如果我执行这个 javascript:

$('div').each(function(index){
alert($(this).html());
$(this).remove();
}

我会看到三个警报还是两个警报?

最佳答案

无论您将对选择执行什么操作,jQuery 都会在应用该操作之前进行选择。我的意思是 $('div') 是一个选择器,选择过程发生在其他链式方法(例如 each())之前并且与其他方法无关。这是语言的产物,因为 $() 必须先求值,然后才能调用方法。

如果该选择从您的页面中抓取了三个 div,那么现在列表中就有 3 个 jQuery 对象可以迭代了。 你可以通过做来证明这一点:

$('div').length

因此,您正在迭代具有三个索引 (0、1、2) 的数组,如果您从 DOM 中删除索引 1 的 div,则 each() 回调的下一次迭代将仍然是索引 2 处的对象。查看此现场演示以获取证据:

演示: http://jsfiddle.net/marcuswhybrow/HYJa4/

关于javascript - 如果在循环内更改 DOM,则 jQuery each() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4735604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com