我的一位朋友最近和我分享了这个:
$("*").append($("*")); // watch your browser eat itself
这个jQuery究竟尝试做什么?它是否会导致无限循环,还是只是通过迭代地将每个元素附加到每个其他元素来破坏DOM?我知道将一个元素附加到另一个元素基本上将它从当前父元素移动到那里。但是当它试图将一个元素附加到自身时会发生什么?它只是出错并死亡,或者跳过这一步并继续前进?
答案 0 :(得分:1)
在Chrome和FFX中都没有(因为我很害怕,我没有在IE中测试)我得到一个层次结构请求错误,当你试图将一个节点附加到自身或附加到一个空节点或一堆其他节点时会发生这种错误类似的原因。
这意味着逻辑上它确实通过DOM树并尝试首先附加其他...选择器选择相同的节点两次并尝试将其附加到自身,这会导致错误。
答案 1 :(得分:0)
从它的外观来看,它会出错(并且什么都不做)因为你试图绝对追加所有的html / head / script / body
标签。我假设这是因为在特定标签内添加一些这些标签会触发错误。 (即:在<html/head/etc>
标记内添加所有<script>
标记。)
答案 2 :(得分:0)
*
是所有代码的CSS选择器。所以基本上“将所有标签附加到所有标签”。