2013-03-13 68 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的字符串,注入该字符串到表中。