2012-03-09 25 views
0

これを簡単にする方法はありますか?別の子供の前に親DIV内にDIVを作成するDIV

$('#content').append('<div id="bar"></div>'); 
$('#bar').insertBefore('#footer'); 
$('#foo').appendTo('#bar'); 

これは最終的な製品の外観ですが、私はそこにきれいな方法があると仮定しています。

<div id="content"> 
    <div id="bar"> 
    <div id="foo"></div> 
    </div> 
    <div id="footer"></div> 
</div> 

...よく、私は2行にしました。

$('<div id="bar"></div>').insertBefore('#footer'); 
$('#foo').appendTo('#bar'); 

#footerが常に存在するため、実際に#contentに追加する理由はありませんでした。

+0

私は['insertBefore()'](http://api.jquery.com/insertBefore/)はあなたが思っていることはしません。あなたの使い方では '$( '#footer')要素の前に' $( '#bar') 'を兄弟として挿入します。一方、あなたの完成したコードは '#bar'は' #footer'の*親*でなければならないことを示唆しています。 –

+0

ありがとう、ちょうどそれをキャッチしました。例を更新しましょう。さて、更新されました。私の例を複製する間違い。 – benblustey

答えて

2

私が提案してもよい:

$('<div id="bar" />').insertBefore($('#footer')).append('<div id="foo" />'); 

JS Fiddle demo

簡潔にするためにこれが勝っていますが(正に、読んで理解するのがかなり簡単だと思いますが)、自分の最初の試みよりもはるかに単純だとは思いません。

私は上記のコードで、#foodivがページに存在していないと仮定しています。それはがすでに存在する場合、代わりに使用します。

$('<div id="bar" />').insertBefore($('#footer')).append($('#foo'));​ 

JS Fiddle demo

参考文献:

+0

これはまさに私が探していたものです。私の解決策は機能しましたが、それは大まかなカットでした。あなたは正しい、 'foo'はヘッダーにロードされたダイナミックなSEOコンテンツですが、テンプレートページに移動する必要があります。これは完璧な解決策です。あなたの指導に感謝します。 – benblustey

+0

あなたは絶対に歓迎です。私は助けになってうれしいです! =) –

関連する問題