我有一个由其他软件生成的表,每行包含50列,我试图通过在</tr><tr>
元素的末尾添加<td>
来打破列
这是即时生成的代码:
<tbody>
<tr>
<td class="col1" scope="col">08/22/2014</td>
<td class="col2" scope="col">Share</td>
<td class="col3" scope="col">Success</td>
<td class="col4" scope="col">Some notes</td>
<td class="col5" scope="col">8/23/2014</td>
...etc
<td class="col51" scope="col">End column</td>
如果我使用这个Jquery:
$( ".col4").after('</tr><tr><td> </td>');
它会附加但不尊重</tr>
....它会忽略它并添加<tr>
,从而生成此代码。
<td class="col3" scope="col">Success</td>
<td class="col4" scope="col">Some notes</td>
<tr>
<td> </td>
</tr>
<td class="col5" scope="col">etc...</td>
想知道让JQUERY为我添加<TR>
的最佳方法是什么?当我在Firebug中修改代码时,打破行会给我提供所需的输出,只是不知道如何让JQUERY给我</tr>
。
答案 0 :(得分:4)
<强> jsFiddle Example 强>
Detach最后2个单元格,将它们附加到tbody
并用tr
$('.col4').nextAll().detach().appendTo('tbody').wrapAll('<tr />')
答案 1 :(得分:0)
您无法使用JQuery单独插入标记。例如,使用以下代码,将<p>
元素插入到正文中:
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<script>
$("body").append("<p>");
</script>
</body>
</html>
使用Firefox检查器,这就是DOM的样子:
因此,$("...").append("<p>")
,$("...").append("</p>")
,$("...").append("<p></p>")
都以相同的方式修改DOM。
答案 2 :(得分:-1)
您无法将不完整或非法格式化的HTML作为DOM元素处理。您希望在该列之前收集格式正确的子项,并将它们填充到新的完整<tr>
。
如果您想将HTML作为文本处理,则需要将其转换为html()
的文本,并将其粘贴到实际正确关闭的HTML中,然后将其转换回来。