看起来当insertBefore()
或insertAfter()
与原点和目的地具有相同的元素时,该元素将被删除。我的理解是否正确?
$('#foo').insertBefore($('#foo'))
这是一个功能吗?如果是这样,那些功能还有其他的问题吗?
答案 0 :(得分:7)
这是因为insertBefore
和insertAfter
删除了一个元素并将其移动。删除元素后,在元素之前(或之后)不再存在原始元素。要获得您可能正在寻找的克隆效果,请尝试:
$('#foo').clone().insertBefore($('#foo'))
答案 1 :(得分:2)
它实际上似乎是known bug(不是一个功能),虽然可能有一个传入的修复程序(1.9版本)。
来自bug评论:
由于jQuery.domManip传入一个片段,jQuery.clean将#x移动到 片段。后来当它进入jQuery.after中的回调时, 原始的parentNode消失了。
答案 2 :(得分:0)
是的,insertBefore()
和insertafter()
将元素从源位置移动到目标位置。如果要替换插入克隆,可以使用:
$('#foo').clone().insertBefore($('#foo'))
但请注意,克隆将具有相同的ID,这是您不想要的。因此,在克隆之后,但在插入之前更改id。
即。类似的东西:
$('#foo').clone().attr('id', 'foo2').insertBefore($('#foo'))