2010-04-16 18 views
1

我有一個表在我的標記上,我想前加一些div和至關重大像這樣:。之前方法添加意外關閉標籤

<div class="widebox"> 
<div class="widebox-header">Opret/rediger bruger</div> 
<div class="widebox-middle"> 
<table id="Table3"></table> 
</div> 
<div class="widebox-bottom"></div> 
</div> 

我試圖用jQuery做到這一點,像這樣:

$('#Table3').before('<div class="widebox"><div class="widebox-header">Opret/rediger bruger</div><div class="widebox-middle">'); 
$('#Table3').after('</div><div class="widebox-bottom"></div></div>'); 

然而這就是呈現出來,該方法似乎閉上了開放的div:

<div class="widebox"> 
    <div class="widebox-header">Opret/rediger bruger</div> 
    <div class="widebox-middle"></div></div><!-- unexpected close divs --> 
    <table id="Table3"></table> 
<div class="widebox-bottom"></div> 

任何人都知道腠ld是否會造成這種情況?

回答

4

before()和after()自動關閉元素。爲什麼不嘗試使用wrap()在表格中插入widebox-middle?

$('#Table3').wrap('<div class="widebox-middle" />'); 
$('.widebox-middle').wrap('<div class="widebox" />'); 
$('.widebox-middle').before('<div class="widebox-header">Opret/rediger bruger</div>'); 
$('.widebox-middle').after('<div class="widebox-bottom"></div>'); 
+0

除了您選擇的widebox,中間應該是'.widebox -middle'而不是'#widebox-middle'(你需要通過class而不是id來選擇) – Graza 2010-04-16 09:54:31

+0

對!我會改變它。謝謝:) – mamoo 2010-04-16 10:03:18

+0

非常感謝! :) – timkl 2010-04-16 10:16:10

2

.before.after方法需要描述DOM樹的完全定義的部分 - 也就是每個呼叫必須同時包含開始和結束標記 - 這些方法添加元素,而不是原始的HTML,所以任何畸形你通過與任何一個語句/不完整的HTML將被轉換爲有效的東西...

退房的.wrap()方法 - 這是你所需要的

http://api.jquery.com/wrap/

2

.before().after()插入元素,而不是字符串。未封閉的<div>不是完整的元素,因此它會自動關閉。你想要的是使用.wrap()函數將新的<div>包裝在表格中。例如:

$('#Table3').wrap('<div class="widebox-middle" />'); 
1

你可以用這些div .wrap()表。但是,在這種情況下,我寧願 取表與DOM的,創建新的DOM結構,將其插回,如:

var myTable = $('#Table3'), 
    root  = myTable.parent(), 
    DOMStruct = $('<div class="widebox"><div class="widebox-header">Opret/rediger bruger</div><div class="widebox-middle"></div><div class="widebox-bottom"></div></div>'); 

myTable.detach(); 

DOMStruct.find('.widebox-middle').append(myTable); 
root.append(DOMStruct);