8

私はこれを行うための良い方法を理解できないようですが、それは単純なはずです。やりたい要素がありappend a divます。次に、クローンを作成してその中間divに押し込みたい別の要素があります。これが私がやりたかったことです:

$("#somediv > ul").after("<div id='xxx'></div>").append($("#someotherdiv").clone());

これは近いようですが、完全にはありません。これに伴う問題は、「追加」が元の#somediv > ulセレクターで動作しているように見えることです。この種のことは理にかなっていますが、それは私が望んでいたことではありません。で追加した中間divを最も効率的に選択し、afterそれに入れるにはどうすればよい#someotherdivですか?

4

3 に答える 3

9

逆に行って を使用しますinsertAfter()

$("<div id='xxx'></div>")
    .append($("#someotherdiv").clone())
    .insertAfter("#somediv > ul")

生成された DOM ノードを文書に追加するのは、作業が完了してからにしてください。

表示されたドキュメントにノードが追加されると、ブラウザーはビューを更新するために変更をリッスンし始めます。表示されたドキュメントにノードを追加する前にすべての作業を行うと、ブラウザーのパフォーマンスが向上します。

于 2008-09-10T18:37:39.010 に答える
5

insertAfter() を使用します。

$("<div id='xxx'></div>").insertAfter("#somediv > ul").append($("#someotherdiv").clone())
于 2008-09-10T18:30:07.767 に答える
0

「after」で追加した中間 div を最も効率的に選択し、「#someotherdiv」をその中に入れるにはどうすればよいですか?

@Vincentのソリューションは、おそらく同じ結果を得るための最速の方法です。ただし、何らかの理由で div を追加する必要がある場合は、after()それを選択して操作する必要があります。

.nextAll( [expr] )

Find all sibling elements after the current element.
Use an optional expression to filter the matched set.

したがって、js は次のようになります。

$("#somediv > ul")
    .after("<div id='xxx'></div>")
    .nextAll('#xxx')
    .append($("#someotherdiv").clone());
于 2008-09-10T18:07:29.707 に答える