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

使用append动态渲染tab列表时,空列表提示重复显示如何解决

空列表提示重复问题修复方案

问题根因

  • 原有判断逻辑错误:$("#typeB").length是判断id=typeB的tbody元素是否存在,该元素在页面中一直存在,返回值永远为1,因此你写的空判断永远不会触发
  • 空提示插入时机错误:空提示代码写在单条数据的判断分支中,每遇到1条不符合渲染条件的数据就会插入1次空提示,符合你所说的3+1条不符合数据就渲染4条空提示的场景

修复方案

调整渲染逻辑:每次切换tab加载数据前先清空对应容器,等所有符合条件的列表项渲染完成后,统一判断容器是否为空,再决定是否插入空提示。

修正后代码示例

// 1. 切换tab加载typeB对应数据前,先清空tbody原有内容
$("#typeB").empty();
let count = 1;
// 2. 遍历当前tab对应的所有源数据,仅渲染符合条件的项
// 下方的data请替换为你当前tab对应的接口返回列表变量
data.forEach(e => {
  if (e.isd.id == '5') {
    $("#typeB").append(`
      <tr class="tb-odr">
          <td class="">${count++}</td>
          <td class="tb-odr-amount">
              <span class="tb-odr-total">
                  <span class="amount">${e.name}</span><br>
              </span>
          </td>
          <td class="tb-odr">
              <span class="tb-odr-total">
                  <p><small>${e.description}</small></p>
              </span>
          </td>
      </tr>
    `);
  }
});
// 3. 所有项渲染完成后,统一判断是否为空,仅插入1次空提示
if ($("#typeB").children().length === 0) {
  // 注意:thead只有4个th,colspan从5改为4才能正常居中
  $('#typeB').append(`<tr><td colspan="4"><div class="alert alert-danger text-center">Nothing in the list yet !</div></td></tr>`);
}

额外说明

其他3个tab如果存在同类问题,按照相同逻辑调整即可,不需要修改原有HTML结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:39:04