5

出発地と目的地と同じ要素がある場合、insertBefore()またはその要素が削除されているように見えます。insertAfter()私の理解は正しいですか?

$('#foo').insertBefore($('#foo'))

これは機能ですか?もしそうなら、これらの機能には他にどのような落とし穴がありますか?

4

3 に答える 3

9

これは、要素insertBeforeinsertAfter削除して移動するためです。要素を削除すると、元の要素が前(または後)に挿入されることはなくなります。探しているクローン効果を実現するには、次のことを試してください。

$('#foo').clone().insertBefore($('#foo'))

于 2013-01-13T17:38:07.607 に答える
3

修正(1.9リリース)が行われる可能性はありますが、実際には既知のバグ(機能ではない)のようです。

バグコメントから:

jQuery.domManipはフラグメントを渡すため、jQuery.cleanは#xをフラグメントに移動します。後でjQuery.afterのコールバックに到達すると、元のparentNodeは失われます。

于 2013-01-13T17:42:21.200 に答える
0

はい、要素をソース位置からデスティネーション位置にinsertBefore()移動insertafter() します。代わりにクローンを挿入する場合は、次を使用できます。

$('#foo').clone().insertBefore($('#foo'))

ただし、クローンは同じIDを持つことに注意してください。これは、望ましくないことです。したがって、クローンを作成した後、挿入する前にIDを変更してください。

つまり、次のようなものです。

$('#foo').clone().attr('id', 'foo2').insertBefore($('#foo'))
于 2013-01-13T17:36:35.687 に答える