使用jQuery将行添加到表的tbody

时间:2012-06-01 13:48:47

标签: jquery dynamic html-table rows

我正在尝试向表的tbody添加行。但我遇到了实现这个问题的问题。首先,从html页面更改下拉列表时调用发生所有事情的功能。我创建了一个tr字符串,其中包含所有包含html元素,文本和其他内容的td。但是当我尝试使用以下方法将生成的行添加到表中时

$(newRowContent).appendTo("#tblEntAttributes tbody");

我遇到了错误。该表的名称为tblEntAttributes,我正在尝试将其添加到tbody

实际上正在发生的事情是jQuery无法将tblEntAttributes作为html元素。但我可以使用documemt.getElementById("tblEntAttributes");

访问它

有什么方法可以通过向表的tbody添加行来实现这一点。也许是旁路或其他什么。

以下是整个代码:

var newRowContent = "<tr><td><input type=\"checkbox\" id=\"" + chkboxId + "\" value=\"" + chkboxValue + "\"></td><td>" + displayName + "</td><td>" + logicalName + "</td><td>" + dataType + "</td><td><input type=\"checkbox\" id=\"chkAllPrimaryAttrs\" name=\"chkAllPrimaryAttrs\" value=\"chkAllPrimaryAttrs\"></td><td><input type=\"checkbox\" id=\"chkAllPrimaryAttrs\" name=\"chkAllPrimaryAttrs\" value=\"chkAllPrimaryAttrs\"></td></tr>";

$("#tblEntAttributes tbody").append(newRowContent); 

我忘记提到的一件事是编写此代码的函数实际上是ajax调用的成功回调函数。我可以使用document.getElementById("tblEntAttributes")访问该表格,但出于某种原因$(#tblEntAttributes)似乎不起作用。

6 个答案:

答案 0 :(得分:85)

("#tblEntAttributes tbody")

需要

$("#tblEntAttributes tbody")

您没有选择语法正确的元素

这是

的一个例子
$(newRowContent).appendTo($("#tblEntAttributes"));

$("#tblEntAttributes tbody").append(newRowContent);

工作 http://jsfiddle.net/xW4NZ/

答案 1 :(得分:34)

使用此

$("#tblEntAttributes tbody").append(newRowContent);

答案 2 :(得分:14)

我从未遇到过这样一个奇怪的问题! o.O

你知道问题是什么吗? $不起作用。我尝试使用像jQuery("#tblEntAttributes tbody").append(newRowContent);这样的jQuery相同的代码,它就像一个魅力!

不知道为什么会出现这个奇怪的问题!

答案 3 :(得分:3)

正如@wirey所说,appendTo应该有用,如果没有,那么你可以试试这个:

$("#tblEntAttributes tbody").append(newRowContent);

答案 4 :(得分:3)

这是一个使用你提到的html下拉列表的appendTo版本。它在&#34;更改&#34;。

上插入另一行
$('#dropdown').on( 'change', function(e) {
    $('#table').append('<tr><td>COL1</td><td>COL2</td></tr>');
});

举个例子供你玩。祝你好运!

http://jsfiddle.net/xtHaF/12/

答案 5 :(得分:0)

使用Lodash,您可以创建模板,您可以按照以下方式执行此操作:

    <div class="container">
        <div class="row justify-content-center">
            <div class="col-12">
                <table id="tblEntAttributes" class="table">
                    <tbody>
                        <tr>
                            <td>
                                chkboxId
                            </td>
                            <td>
                               chkboxValue
                            </td>
                            <td>
                                displayName
                            </td>
                            <td>
                               logicalName
                            </td>
                            <td>
                                dataType
                            </td>
                        </tr>
                    </tbody>
                </table>
                <button class="btn btn-primary" id="test">appendTo</button>
            </div>
        </div>
     </div>

这里是javascript:

        var count = 1;
        window.addEventListener('load', function () {
            var compiledRow = _.template("<tr><td><input type=\"checkbox\" id=\"<%= chkboxId %>\" value=\"<%= chkboxValue %>\"></td><td><%= displayName %></td><td><%= logicalName %></td><td><%= dataType %></td><td><input type=\"checkbox\" id=\"chkAllPrimaryAttrs\" name=\"chkAllPrimaryAttrs\" value=\"chkAllPrimaryAttrs\"></td><td><input type=\"checkbox\" id=\"chkAllPrimaryAttrs\" name=\"chkAllPrimaryAttrs\" value=\"chkAllPrimaryAttrs\"></td></tr>");
            document.getElementById('test').addEventListener('click', function (e) {
                var ajaxData = { 'chkboxId': 'chkboxId-' + count, 'chkboxValue': 'chkboxValue-' + count, 'displayName': 'displayName-' + count, 'logicalName': 'logicalName-' + count, 'dataType': 'dataType-' + count };
                var tableRowData = compiledRow(ajaxData);
                $("#tblEntAttributes tbody").append(tableRowData);
                count++;
            });
        });

此处位于jsbin