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

如何捕获jQuery DataTables表格行选中时的checkbox点击或变更事件

解决方案

情况1:自定义表格内的checkbox列(未使用Select扩展)

DataTables的表格行是动态渲染的,直接给checkbox绑定事件会在分页、搜索重绘后失效,用事件委托绑定到静态父容器即可:

// #yourDataTableId替换为你的表格ID,#operateLink替换为你要控制的链接ID
$('#yourDataTableId').on('change', 'input[type="checkbox"]', function() {
  // 可替换为你自己的选中行统计逻辑
  const checkedCount = $('#yourDataTableId input[type="checkbox"]:checked').length;
  if(checkedCount > 0) {
    $('#operateLink').removeClass('disabled').attr('disabled', false);
  } else {
    $('#operateLink').addClass('disabled').attr('disabled', true);
  }
});

全选checkbox的变更也会触发该事件,不需要额外单独绑定。

情况2:使用Select扩展的场景

之前没生效大概率是没有绑定Select扩展提供的内置事件,直接监听select和deselect事件即可,会在行选中/取消选中时自动触发:

const table = $('#yourDataTableId').DataTable({
  // 保留你原来的初始化配置,新增开启select配置
  select: {
    style: 'os',
    selector: 'td:first-child input[type="checkbox"]' // 绑定到行首的checkbox
  }
});

// 同时监听选中和取消选中事件
table.on('select deselect', function () {
  const selectedCount = table.rows({ selected: true }).count();
  selectedCount > 0 ? $('#operateLink').removeAttr('disabled') : $('#operateLink').attr('disabled', true);
});

常见踩坑说明

  • 不要直接给动态生成的checkbox绑定click/change事件,分页、搜索后新渲染的行不会继承绑定的事件,必须用事件委托或者DataTables提供的内置事件
  • 使用Select扩展前要确保已经引入了对应扩展的CSS和JS文件,否则事件不会触发

内容的提问来源于stack exchange,提问作者awthird

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:54:04