如何获取Bootstrap Table行的data-index属性提取对应单元格值
问题原因
你的原有代码存在两处逻辑偏差:
- 点击事件绑定在整个表格容器上,未指定点击目标为
<tr>行,每次点击都会遍历全表所有行 - 未按行拆分单元格值,直接把整行文本压入数组,导致所有单元格数据平铺到同一个一维数组中
方案1:点击任意行直接获取当前行数据
这是最常用的交互场景,点击哪行就返回对应行的单元格数组:
// 可选项:存储所有点击过的行数据 let clickedRows = [] // 事件委托绑定行点击事件 $("#table").on("click", "tr", function () { // 生成当前行的单元格值数组 const currentRow = $(this).find("td").map(function() { return $(this).text().trim() }).get() // 打印当前行数据(符合你要的单条数组格式) console.log(currentRow) // 如需存储所有点击过的行,执行push操作 clickedRows.push(currentRow) })
方案2:根据
data-index主动获取指定行数据 如果需要通过data-index的数值主动拉取对应行数据,可使用属性选择器实现:
// 封装根据index获取行数据的方法 function getRowDataByIndex(index) { return $(`#table tr[data-index="${index}"]`).find("td").map(function() { return $(this).text().trim() }).get() } // 调用示例:获取data-index为2的行数据 console.log(getRowDataByIndex(2)) // 输出 ["ACB","2095","0784","A"]
方案3:一次性生成全表的二维数组结构
如果需要一次性把所有行的数据按你预期的结构输出,可直接遍历全表行:
const allTableData = $("#table tr").map(function() { return [$(this).find("td").map(function() { return $(this).text().trim() }).get()] }).get() console.log(allTableData) /* 输出结构: [ ["ACB","1540","0784","E"], ["ACB","1559","0784","E"], ["ACB","2095","0784","A"], ... ] */
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

