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

如何用jQuery each()检测多个.timeline-graphic div的.step元素末尾

解决方案

这个问题其实很好解决,核心思路是先遍历每个时间线容器(.timeline-graphic),再在每个容器内部单独处理它的.step元素,这样就能保证每个容器里的偏移量从0重新开始计算啦!

推荐实现方式(更清晰易维护)

这种方式把每个时间线的逻辑完全隔离,代码可读性和扩展性更好:

// 遍历每个时间线容器
$(".timeline-graphic").each(function() {
  var i = 0; // 每个容器内部单独初始化偏移量变量
  // 遍历当前容器下的所有.step元素
  $(this).find(".step").each(function() {
    $(this).css('left', i + 'px');
    i += 20; // 每次偏移增加20px
  });
});

为什么这能解决问题?

你原来的代码是把所有.step元素放在一个全局循环里处理,变量i会一直累加,跨容器不会重置。而现在的写法:

  • 先逐个处理每个.timeline-graphic容器
  • 每个容器内部重新初始化i = 0
  • 只处理当前容器下的.step元素,处理完当前容器后,下一个容器会重新开始计算偏移量

另一种实现方式(单循环判断)

如果你偏好只用一个全局循环,也可以通过判断当前元素是否为父容器的最后一个.step来重置i:

var i = 0;
$(".timeline-graphic .step").each(function() {
  $(this).css('left', i + 'px');
  
  // 判断当前元素是否是父容器的最后一个.step
  if ($(this).is($(this).parent().find(".step:last"))) {
    i = 0; // 是最后一个,重置偏移量
  } else {
    i += 20; // 不是最后一个,继续累加
  }
});

注意事项

第二种方式虽然能实现需求,但逻辑相对绕一些,当DOM结构变化时(比如新增其他元素),判断条件可能需要调整。因此更推荐第一种容器级遍历的写法。

内容的提问来源于stack exchange,提问作者Sébastien Gicquel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:35:13