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?的主要内容,如果未能解决你的问题,请参考以下文章

JQuery 将 thead 和 tbody 附加到表中

JQuery 使用来自选定表行的数据填充表单字段

使用 JQuery 反转表行而不触及标题行

如何使用 jquery 将带有 laravel 路由的 <a> 标签添加到表行

在 OBIEE 中将总计添加到数据透视表行的末尾

使用 jquery 在引导程序中获取选定表行的值