多行表格中jquery的选择器为什么会出现无法选中dom的情况?


图示表格,右侧还有5-12月数据但是因为不重要没有全部截取

dom结构如图所示,表格主体在 data-excludetable="salesDataList"div 中,其中每行相同姓名角色的 tr 拥有相同的 data-index (图中1-4行 data-index="0",5-8行 data-index="1" )。每行中月份对应的数据列的 td 分别对应 data-month="1"data-month="12"
现在需求希望图示中2025-03列中填写对应来源数据后,自动计算出该角色的合计数量,但是用如下选择器会出现只有 data-index="0" 的dom节点能被选中,其余 index 只能拿到 undefined 的情况。

如上例,[data-excludetable=salesDataList] [data-index="0"]:nth-child(1) [data-month="3"]可以正常选中 data-index="0" 中首行 data-month="3"td
但是用 [data-excludetable=salesDataList] [data-index="1"]:nth-child(1) [data-month="3"]期望选择李四对应part1的2025-03的数据时拿到的length为0。
表格是通过for循环生成的,按理来说不同角色的dom都是对称的,为何会出现这种只能选中 data-index="1" 的元素的情况呢?

阅读 266
1 个回答
// 监听输入变化
$('[data-excludetable=salesDataList] [data-month="3"] input').on('change', function() {
  
  var currentIndex = $(this).closest('[data-index]').attr('data-index');
  
  var sum = 0;
  $('[data-excludetable=salesDataList] [data-index="' + currentIndex + '"] [data-month="3"] input').each(function() {
    sum += parseInt($(this).val()) || 0;
  });
  
  // 更新合计单元格
  $('[data-excludetable=salesDataList] [data-index="' + currentIndex + '"] [data-source="合计"] [data-month="3"]').text(sum);
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题