【发布时间】:2020-08-11 14:43:02
【问题描述】:
当我单击数据表中一行的按钮时,我试图获取行索引,但我没有获取实际索引,而是获取了显示的索引。当我添加一个新行然后单击该行的按钮时,就会发生这种情况。表格的顺序是时间戳,所以当我点击它给我索引 0 的按钮时,新行会立即进入顶部,但这只是显示的表格索引,而不是真正的索引。
function myFunction(this_) {
var tr = $(this_).closest("tr");
rowindex = tr.index(); //this gives the displayed index of the row, NOT the real index
}
从 html 数据表按钮调用此函数:
<td>
<button type="button" id="edit_button" onclick='myFunction(this)' name="edit_button">Edit</button>
</td>
更新: 添加新行时,我尝试打印所有行的索引:
table.rows().every( function () {
console.log(this.index());
});
它给出了正确的索引,所以它打印如下:
5 2 3 4
如您所见,索引 5 是第一个,因为由于我使用的顺序/过滤,它显示在第一行。
简单地说,当我点击第一行的按钮时,它不是给我索引 5,而是给我 0。
【问题讨论】:
-
“显示索引”和“实际索引”是什么意思?返回的索引将基于包含
tbody中的tr元素的数量,无论它们是否显示。 -
@RoryMcCrossan 我所听到的显示索引是显示行的索引,因此根据排序或过滤,第一行可能具有索引 7,但它会给出 0,因为它显示为表中的第一行。这正是我遇到的问题。
-
抱歉,我还是没明白你的意思。如果该行首先显示在表格中,那么它将始终是索引 0。为什么您认为在您的示例中它会是索引 7?
-
@RoryMcCrossan 看到更新的问题,也许它澄清了一点
-
@RoryMcCrossan 也许它甚至不是一个索引,只是行号,如果我在这里使用了错误的语法,很抱歉。因此,与其调用“显示的索引”,不如将其称为行号。