如何更改表行中的id标记

时间:2014-06-12 00:36:44

标签: jquery html

是否可以使用jQuery更改每行的td.firstChild?

<tr>
    <td>
        <input name="wrong" />
    </td>
    <td>
        <input name="wrong" />
    </td>
</tr>
<tr>
    <td>
        <input name="wrong" />
    </td>
    <td>
        <input name="wrong" />
    </td>
</tr>

到这个

<tr>
    <td>
        <input name="1" />
    </td>
    <td>
        <input name="1" />
    </td>
</tr>
<tr>
    <td>
        <input name="2" />
    </td>
    <td>
        <input name="2" />
    </td>
</tr>

我已尝试过这几种方法,但似乎它并没有为每一行做到这一点。它只是将行数添加到所有这些行。我还设法为表中的每个td.firstChild增加它。

var i = 0;
var rows = $("tr");
    for (var i = 0; i < rows.length; i++) {
        $("td").each(function () {
            this.firstChild.setAttribute("name", i);
        });
    }

$("tr").each(function (i) {

        $("td").each(function () {
                this.firstChild.setAttribute("name", i);
            });
    });

有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

首先,您的页面上永远不应该有重复的ID。

至于这个问题,您只需要在td中旅行孩子tr,而不是一次又一次地循环所有td标签。

$("tr").each(function (i) {
        $(this).child("td").each(function () {
                this.firstChild.setAttribute("id", i);
        });
});

答案 1 :(得分:1)

尝试:

$("tr").each(function (index, value) {

    $("td", value).each(function (index2, value2) {
            $("input", this).prop("id", "NewID" + index + index2);
        });
});

http://jsfiddle.net/m8n3Z/

在这里,您将在行的上下文中获取td,然后使用jQuery的prop方法将新ID应用于其中的输入。