【发布时间】:2018-06-18 02:10:54
【问题描述】:
我创建了一个表单,您可以在其中使用 javascript 和 jQuery 添加或删除表行。我想知道如何获取和设置每个表行的索引,以便即使我要从表中间删除和元素,也可以保持顺序。该表的格式为:
<thead>
<tr>
<th>Index</th>
<th>Name</th>
<th>Property</th>
<th>Edit/Delete</th>
</tr>
</thead>
<tbody>
<tr>
<td class="index">Index goes here (1)</td>
<td>NameOne</td>
<td>PropOne</td>
<td><span class="edit">Edit Icon</span> <span class="delete">Delete Icon</span></td>
</tr>
<tr>
<td class="index">2</td>
<td>NameTwo</td>
<td>PropTwo</td>
<td><span class="edit">Edit Icon</span> <span class="delete">Delete Icon</span></td>
</tr>
<tr>
<td class="index">3</td>
<td>NameThree</td>
<td>PropThree</td>
<td><span class="edit">Edit Icon</span> <span class="delete">Delete Icon</span></td>
</tr>
</tbody>
现在我想要实现的是,如果我要删除第二行,前第三行的索引应该自动更改为 2,如果我要添加新元素,它应该自动采用索引值 3 等等开。
我试图通过以下方式实现:
function setIndex(){
$("td.index").each(function(index) {
$(this).text(++index);
});
}
但是当我使用上述函数时,虽然添加元素时的初始索引正确打印,但当我在删除或编辑行后再次调用该函数时索引不会正确更新(我使用 jQuery remove 删除了该行)。
我也在用 jQuery append() 创建新的表行。
我认为虽然我使用了 remove(),但它们并没有像我在 setIndex() 中使用 console.log("test") 语句时那样被完全删除,尽管“test”应该只打印两次(我最初创建了 3 行并删除了其中一个)它打印了三次,表示有 3 个 tr.index。
请帮我解决同样的问题。
【问题讨论】:
-
你能添加你的“删除”功能吗?
-
提供一个重现问题的演示,如minimal reproducible example
标签: javascript jquery css html-table