jQuery在名称中插入行号

时间:2014-09-09 11:41:46

标签: javascript jquery html

我有这样的标记

<table id="document-data">
    <tr>
        <td>Name</td>
        <td>Title</td>
        <td>Select Test</td>
    </tr>
    <tr class="new-document-meta">
        <td><input type="text" name="name"></td>
        <td><input type="text" name="title"></td>
        <td>
            <select name="select-test[0]">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
            </select>
        </td>
    </tr>
</table>
<a href="#" id="add-row">Add row</a>

现在,您可以看到我有添加行。因此,当我点击add-row时,它只会向表中添加另一行。另外,在另一个添加的行中,name字段将添加这样的行名称 对于第二行,标题的名称标签将成为title_2,如此。 所以我为此制作了我的js

$(document).ready(function() {
        $('a#add-row').click(function() {
            var Rows = $('table#document-data tr').length;
            var ParentClone = $('table#document-data tr.new-document-meta').last();
            var ParentHtml = $('table#document-data tr').last();
            ParentClone.clone().insertAfter(ParentHtml).find("select").each(function() {
                var $item=$(this);
                $item.prop("name","select-test["+Rows+"]");
            });
            $(ParentClone).find('input').each(function() {
                $(this).attr('name', $(this).attr('name') + Rows);
            });
        });
    });

这里它适用于select标签,但它不适用于输入标签。那么有人可以帮助我吗?

4 个答案:

答案 0 :(得分:0)

试试这个:

ParentClone.find('input').each(function() {
                $(this).attr('name', $(this).attr('name') + Rows);
            });

不需要围绕它。

答案 1 :(得分:0)

有一些愚蠢的错误因为它不是jquery选择器所以不需要写$

ParentClone.find('input').each(function() {
                $(this).attr('name', $(this).attr('name') + Rows);
            });

答案 2 :(得分:0)

ParentClone 已经是你在代码中定义的jquery对象:

var ParentClone = $('table#document-data tr.new-document-meta').last();

它不是选择器,因此您不需要执行$(ParentClone),因为它已经是jquery对象只是使用它ParentClone.find(....)

ParentClone.find('input').each(function() {

答案 3 :(得分:0)

对于增量名称值,您需要在定义行时将行数转换为字符串,然后在定义name属性时将根据需要进行连接。用这个替换你的行定义:

var Rows = String($('table#document-data tr').length);