jQuery复制并添加更改行

时间:2019-06-23 23:57:44

标签: javascript jquery

我试图复制一行,更改一些数据,然后将其附加到表的末尾:

$(document).ready(function(){
    $("#show_new_rows_number").change(function(){
        var table_body = $("tbody");
        var master_row = table_body.clone().children('tr')[mr_selector];
            master_row.children('td')[0].children('input').first().name = 'type['+(rows+1)+']';
            master_row.children('td')[1].children('input').first().name = 'type['+(rows+1)+']';
    });
});

这是HTML:

<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <table>
            <thead>
                <tr>
                    <th>First Name:</th>
                    <th>Last Name</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td><input type="text" name="first_name[1]"></td>
                    <td><input type="text" name="last_name[1]"></td>
                </tr>
            </tbody>
        </table>
        <input type="number" min=1 max=10 value=1 id="show_new_rows_number">
    </body>
</html>

我收到一个错误master_row.children is not a function。当涉及到DOM操作时,我真的很想在Java中遍历和执行任何操作。请帮忙!我什至还没有将行追加到表中,并且已经出现错误。

1 个答案:

答案 0 :(得分:0)

问题在于,从jQuery的.children()方法返回的元素不是jQuery元素,而是HTML元素,因此它们没有任何.children()方法。

因此,假设其余代码是正确的(因为这似乎只是javascript代码的一部分),则您的代码应为:

$(document).ready(function(){
    $("#show_new_rows_number").change(function(){
        var table_body = $("tbody");
        var master_row = table_body.clone().children('tr')[mr_selector];
        $(master_row.children('td')[0]).children('input').first().name = 'type['+(rows+1)+']';
        $(master_row.children('td')[1]).children('input').first().name = 'type['+(rows+1)+']';
    });
});

在这种情况下,请使用开发人员工具在控制台上打印一些值。如果运行console.log($("tbody").clone().children('tr')[mr_selector].children('td')[0]);,则只会得到一个HTML元素,而不是jQuery元素。