看起来当insertBefore()
或insertAfter()
具有与起点和终点相同的元素时,该元素被删除。我的理解正确吗?
$('#foo').insertBefore($('#foo'))
这是一个功能吗?如果是这样,这些功能还有哪些其他问题?
看起来当insertBefore()
或insertAfter()
具有与起点和终点相同的元素时,该元素被删除。我的理解正确吗?
$('#foo').insertBefore($('#foo'))
这是一个功能吗?如果是这样,这些功能还有哪些其他问题?
这是因为insertBefore
并insertAfter
删除一个元素并移动它。删除元素后,将不再存在要在之前(或之后)插入的原始元素。要实现您可能正在寻找的克隆效果,请尝试:
$('#foo').clone().insertBefore($('#foo'))
它实际上似乎是一个已知的错误(不是功能),尽管可能会有一个即将到来的修复(1.9 版本)。
来自错误评论:
由于 jQuery.domManip 传入一个片段,jQuery.clean 将 #x 移动到片段。稍后当它到达 jQuery.after 中的回调时,原来的 parentNode 就消失了。
是的,insertBefore()
并将元素从源位置insertafter()
移动到目标位置。如果你想插入一个克隆,你可以使用:
$('#foo').clone().insertBefore($('#foo'))
但请注意,克隆将具有相同的 ID,这是您不想要的。所以在克隆它之后更改id,但在插入之前。
即类似的东西:
$('#foo').clone().attr('id', 'foo2').insertBefore($('#foo'))