尝试在元素之前插入元素的结果
Result of Trying to Insert an Element Before Itself
当我有HTML:时
<div>
<p id="first">First paragraph!</p>
<p id="second">Second paragraph!</p>
</div>
我运行脚本:
var second = $('#second');
$('#second').insertBefore(second);
结果是:
<div>
<p id="first">First paragraph!</p>
</div>
我知道这个代码是荒谬的,但我写的代码可能是我插入的项目与我之前插入的项目相等。
有人能帮我理解为什么我会得到上面的结果吗?#second
发生了什么?
根据W3C DOM 3规范:
注意:在节点之前插入节点取决于实现。
当插入一个节点时,如果它已经在DOM中,它将首先被移除。因此,您尝试将它插入到不再在DOM中的节点(本身)之前。您应该测试这两个节点是否相同,如果相同,则不要执行插入操作。
编辑
一个简单的js函数是:
function doInsert(insertNode, beforeNode) {
if (insertNode != beforeNode) {
beforeNode.parentNode.insertBefore(insertNode, beforeNode);
}
}
虽然规范不清楚应该发生什么,但我的猜测是:
- CCD_ 2首先从DOM中移除,以便可以将其插入其他位置
- 现在我们尝试在
#second
之前插入它,但是,由于#second
不再在DOM中,所以它没有位置可去
相关文章:
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- JavaScript-在不影响索引的情况下将元素插入数组
- 仅为可见元素插入计数
- 将元素插入页眉
- Javascript:如果数组元素已填充,则为数组的每个元素插入表行
- AngularJS:如何将ng-click绑定到使用嵌入或对象元素插入的SVG图像
- 如何将元素插入 JSON 数组
- 为什么我的 HTML 按钮刷新页面?/为什么我不能让我的新 HTML DOM 元素插入到我的页面中
- 当 Javascript 中的 POST ID 元素插入 PDO 时,数据库中没有结果
- 拼接函数将相同的元素插入每个索引
- Javascript 将元素插入 char Ref 到带有子元素的可编辑 DIV 中
- 如何将SVG元素插入到带有JavaScript的组中
- 什么's是将数组中的元素插入到现有Html元素中的有效方法
- 如何将新元素插入'这'子元素Jquery
- 尝试从AngularJS中的控制器($scope)将元素插入到视图(HTML)中
- 将脚本元素插入浏览器操作页无效
- 循环遍历对象数组并将每个元素插入到html中
- jQuery/Javascript向元素插入属性
- 将元素插入DOM,位置基于时间戳
- 条件模板元素插入的EmberJS回调