You need to enable JavaScript to run this app. 使用jQuery根据状态列隐藏同级行并更新父行的可见子项计数
优惠活动
大模型
产品
解决方案
定价
更多

使用jQuery根据状态列隐藏同级行并更新父行的可见子项计数

特殊同级表格过滤计数完整实现

前置修正:优化非活跃行隐藏逻辑

你原有的隐藏逻辑存在两个问题:

  • 会误隐藏不含Active文本的父行、表头行
  • :contains是模糊匹配,可能误匹配名称列包含Active的行
    修正后的代码:
// 仅隐藏状态非Active的子行、独立节点,排除表头和父行
$(".myTable > tbody > tr").not(":first, .parent").filter(function() {
  return $(this).find("td:first").text().trim() !== "Active";
}).hide();

实现父行计数更新与显隐控制

代码完全基于你给出的同级节点规则实现,不会修改原有表格结构,不影响其他运行中的JS逻辑:

// 遍历所有父行处理
$(".myTable > tbody > tr.parent").each(function() {
  // 获取当前父行对应的所有子行(截止到下一个父行/表头)
  const $childRows = $(this).nextUntil("tr.parent, tr:has(td:contains('Status'))");
  // 统计可见的活跃子行数量
  const activeChildCount = $childRows.filter(":visible").length;

  if (activeChildCount === 0) {
    // 无活跃子项直接隐藏父行
    $(this).hide();
  } else {
    // 更新父行计数:保留原有子项总数,更新活跃数
    const $statusCol = $(this).find("td:first");
    const originText = $statusCol.text().trim();
    // 提取原有子项总数
    const totalMatch = originText.match(/\((\d+)=>/);
    const totalCount = totalMatch ? totalMatch[1] : $childRows.length;
    // 重写状态列文本
    $statusCol.text(`Parent (${totalCount}=>${activeChildCount})`);
    $(this).show();
  }
});

使用建议

  • 可以将以上两段代码封装为独立函数,每次表格Ajax局部更新完成后调用即可生效
  • 逻辑仅通过jQuery修改元素显隐和文本内容,不会触发原有表格的事件冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:15:01