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

分阶段显示表格内容:现有jQuery fadeIn()代码失效求助

表格分批次显示并切换内容的实现方案

问题分析

原代码未生效的核心原因:

  • 初始所有表格行都是可见状态,kids.filter(':hidden')找不到目标元素,fadeIn()自然无法触发
  • 使用setInterval会循环执行逻辑,不符合「单次切换:先显示前半→删除→显示后半」的需求
  • setInterval回调里的$(this)指向window对象,而非表格行,导致appendTo逻辑完全错误

正确实现代码

HTML(保持原有结构不变)

<table id="myTbl"> 
  <thead>
    <tr> 
      <th>A</th>
      <th>B</th>
      <th>C</th>
      <th>D</th>
    </tr>
  </thead>
  <tbody>
   <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
    </tr>
    <tr>
      <td>5</td>
      <td>6</td>
      <td>7</td>
      <td>8</td>
    </tr>
    <tr>
      <td>9</td>
      <td>10</td>
      <td>11</td>
      <td>12</td>
    </tr>
    <tr>
      <td>13</td>
      <td>14</td>
      <td>15</td>
      <td>16</td>
    </tr>
  </tbody>
</table>

jQuery 代码

$(function(){
  // 页面加载完成后,先隐藏后半部分行(对应9-16的数据)
  const $tbody = $('#myTbl tbody');
  const $firstHalf = $tbody.children('tr:lt(2)'); // 前两行(1-8)
  const $secondHalf = $tbody.children('tr:gt(1)'); // 后两行(9-16)
  $secondHalf.hide();

  // 延迟1秒后执行切换逻辑
  setTimeout(function(){
    // 前半部分淡出完成后,删除该行并淡入后半部分
    $firstHalf.fadeOut(500, function(){
      $(this).remove();
      $secondHalf.fadeIn(500);
    });
  }, 1000);
});

逻辑说明

  • 初始化时通过:lt(2)、:gt(1)精准选中前后半部分行,提前隐藏后半部分
  • 用setTimeout实现延迟切换,避免页面刚加载就触发内容替换
  • 依赖fadeOut的回调函数,确保前半部分完全消失后再执行删除和后半部分淡入,保证动画连贯性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:15:40