JQuery追加到表行的末尾而不是Tbody?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JQuery追加到表行的末尾而不是Tbody?相关的知识,希望对你有一定的参考价值。
我试图循环遍历对象,当遇到与数组匹配的某些字符串时,表行应该附加到表中,并在单元格中包含该字符串。
输出正在成功运行,但是,不是将新行添加到先前行之下,而是将它们添加到当前行,因此我有一个超长行而不是五个较短宽度行。我发现如果我在循环外做了同样的事情,它可以根据需要工作,但是在循环内部,它没有。也许循环导致问题,因为我追加到同一个tr?
html:
<table id="tableMemberResults">
<thead>
<tr>
<th>Member</th>
<th>Bill To</th>
<th></th>
<th>Hours</th>
</tr>
</thead>
<tbody></tbody>
</table>
JS:
var tbody = $("#tableMemberResults tbody");
var userTr = $('<tr>');
...
for (i in users) {
if (typeof users[i] == "object") {
if (userArray.indexOf(i) >= 0) {
$('<td>').html(i).appendTo(userTr).css("background-color", "#ffba59");
$('<td colspan = "3">').html("").appendTo(userTr).css("background-color", "#ffba59");
tbody.append(userTr);
}
recursiveIter(users[i]);
}
$('<td>').html(i).appendTo(userTr).css("background-color", "#ffba59");
$('<td colspan = "3">').html("").appendTo(userTr).css("background-color", "#ffba59");
tbody.append(userTr);
}
如上所述,我复制了我的代码并在循环之外使用了一个新的tr变量并且它有效。以下是我的更改。
HTML:
var trTest = $('<tr>');
JS:
$('<td>').html("this is a test").appendTo(trTest).css("background-color", "#ffba59");
$('<td colspan = "3">').html("").appendTo(trTest).css("background-color", "#ffba59");
tbody.append(trTest);
这非常有效。我仍然有很长的代码行,但新的trTest行作为单独的行正确附加。唯一的区别是我不在我的for循环中。
我需要在循环中更改它才能正常工作?
编辑:这是基于Dan的建议的新代码块
$('<td>').html(i).appendTo($('<tr>')).css("background-color", "#ffba59");
$('<td colspan = "3">').html("").appendTo($('<tr>')).css("background-color", "#ffba59");
tbody.append($('<tr>'));
答案
这是因为你创建了一个userTr
然后一遍又一遍地附加它。删除变量并用$('<tr>')
替换,每次都会得到一个新的tr。
您还需要将新tr附加到tbody(或表本身)。
以上是关于JQuery追加到表行的末尾而不是Tbody?的主要内容,如果未能解决你的问题,请参考以下文章