我使用select扩展名并尝试使用所选行的ID来“警告”。
以下代码失败:
let sels = jqTable.api().rows({ selected: true });
let st = '';
sels.each(function (value, index) {
st += ',' + sels.row(value).id();
});
alert(st);
该函数独立于所选行调用一次:
value = [], index = 0
value = [0, 2], index = 0
以下代码成功:
let sels = jqTable.api().rows({ selected: true });
let st = '';
for (let i = 0; i < sels.count(); i++) {
st += ',' + sels.row(sels[0][i]).id();
}
alert(st);
我对each():
的理解是什么?迭代API结果集的内容。
我注意到以下代码运行:
sels.data().each(function (value, index) {
st += ',' + value.IdFile;
});
但是使用它取消了数据表配置中rowId : 'IdFile'
的优势。
答案 0 :(得分:1)
each()
- 在rows()
的情况下,这不是情况 - 它返回单个结果,这恰好发生在是一个包含所选行的rowID的数组。
您的第一个代码块失败,因为只有一次迭代(结果是单个数组)。
您的第二个块有效,因为您正在迭代该单个数组(sels[0]
)。
并且你的第三个也可以工作,因为rows().data()
确实生成了一个包含所有选定行数据的数组。
这example希望有所帮助!