2013-03-13 69 views
0

這是我的HTML:的jQuery appendTo與 '破' HTML

<table id="mytable"> 

</table> 

當我運行這段代碼:

$('<tr>').appendTo('#mytable'); 

我得到:

<table id="mytable"> 
<tr></tr> 
</table> 

如何避免jQuery的從關閉我的標籤appendTo?

+2

這是爲什麼你的問題? – Blender 2013-03-13 23:29:24

+0

「關閉我的標籤」是什麼意思?哪些標籤正在關閉? – Steve 2013-03-13 23:30:07

+0

我試圖追加多個字符串單獨的行(通過不同的循環等),我希望能夠追加開放標籤和結束標籤以外的循環。 – 2013-03-13 23:30:30

回答

3

你不能。 jQuery適用於DOM,它是原始HTML上方的一層。它由只能有效的節點組成。

如果要附加的東西行,使用:

var myRow = $('<tr />').appendTo('#mytable'); 
for(whatever) { 
    $('<td />').appendTo(myRow).text('this is my cell! woo!'); 
} 
+0

這很好用!謝謝! – 2013-03-13 23:40:27

0

不應該有任何理由以免jQuery在第一時間關閉您的標籤。

如果您試圖附加<tr>,然後添加任何內容到標籤中,然後附加關閉</tr>,您應該改爲使用克隆方法。

在HTML:

<tr class="tr-template"></tr> 

在jQuery的:

$('tr-template') 
    .clone() 
    .removeClass('tr-template') 
    .html('whatever you want inside the tr') 
    .appendTo('#mytable'); 
+0

或者只是使用一個真正的JS模板庫。 – Blender 2013-03-13 23:33:29

+0

他更希望在文本行添加'td'標籤,所以你應該建議'。html'而不是'.text'。 – Dave 2013-03-13 23:33:50

+0

@Dave好點。我改變了它。 – 3nafish 2013-03-13 23:34:43

1

正如我在評論中提及上面,你總是可以創建一個字符串,然後使用該字符串在append()

var myString = "<tr><td>Hello World!</td></tr>"; 
$('.inner').append(myString); 

但是,我會建議反對它,並始終創建有效的元素個人idually。

+0

+1對此推薦! – Dave 2013-03-13 23:36:37

0

我想你想要做的事更是這樣的:

var tableData = '<tr>'; 

tableData += "<td>One</td>"; 
tableData += "<td>Two</td>"; 
tableData += "<td>Three</td>"; 

tableData += "</tr>"; 

$('#mytable').html(tableData); 

構建HTML的字符串,注入該字符串到表中。