You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:57:02