在尝试将xml文件解析为表格格式时,jQuery继续关闭我的开放<tr>
标记。有解决方法吗?
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
type: "GET",
url: "sample-data.xml",
dataType: "xml",
success: parseXml
});
});
function parseXml(xml)
{
$(xml).find("user").each(function()
{
var id = "#sortable";
$(id).append("<tr>");
$(id).append("<td>" + $(this).find("name").text() + "</td>");
$(id).append("</tr>");
});
}
</script>
<table id="table" class="tablesorter">
<thead>
<tr>
<th>test</th>
</tr>
</thead>
<tbody id="sortable">
</tbody>
</table>
这是标记的输出方式:
<tr></tr>
<td>data</td>
答案 0 :(得分:2)
只需拨打1次附加而不是多次附加。
更改此部分:
$(id).append("<tr>");
$(id).append("<td>" + $(this).find("name").text() + "</td>");
$(id).append("</tr>");
到此:
$(id).append("<tr><td>" + $(this).find("name").text() + "</td></tr>");
答案 1 :(得分:2)
我建议不要在循环中使用append。相反,将它输出到循环外。
var id = $("#sortable");
var html = '';
$(xml).find("user").each(function()
{
html += '<tr>';
html += '<td>';
html += $(this).find("name").text( );
html += '</td>';
html += '</tr>';
});
id.append(html);
如果您要使用$(this),在循环内多次,如年龄,性别等,我建议您为$(this)分配一个变量,而不是调用$(this)而不是再一次。
P.S我没有测试那段代码,只想提出一些建议......但希望它有效。干杯^^
答案 2 :(得分:1)
是的,jQuery并没有真正发挥作用。试试这个:
function parseXml(xml)
{
$(xml).find("user").each(function()
{
var id = "#sortable";
$(id).append('<tr></tr>');
$(id).find('tr:last').html("<td>" + $(this).find("name").text() + "</td>");
});
}
答案 3 :(得分:1)
我不认为jQuery是罪魁祸首。
当您致电append("<tr>")
时,您希望它做什么?答:您希望它根据您的规范修改DOM。但是, DOM是数据结构,而不是字符串。您无法在DOM中添加“unclosed”元素,因此所有元素在添加时都会固有关闭。
因此,后续的append("<td>...</td>")
会在<{em> {<1}}之后而不是在其内部添加TD元素。此外,任何<tr>
的尝试都会被忽略,因为考虑到append("</tr>")
的处理,它会相当荒谬。