2012-03-09 91 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> 

......好吧,我把它歸結爲兩行。

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

有真不是一個理由追加到#內容,因爲#footer的將永遠存在。

+0

我不認爲['insertBefore()'](http://api.jquery.com/insertBefore/)做你認爲*的事情;在你的使用中,它會在$('#footer')'元素前面插入'$('#bar')'作爲兄弟。而你的完成代碼表明'#bar'應該是'#footer'的* parent *。 – 2012-03-09 22:53:11

+0

謝謝,剛剛發現。讓我更新這個例子。好的更新。我錯誤地複製了這個例子。 – benblustey 2012-03-09 22:55:13

回答

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 2012-03-09 23:17:53

+0

絕對受歡迎;我很高興得到了幫助! =) – 2012-03-09 23:20:34

相關問題