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

Jinja生成表格中CSS开关按钮动画仅首个元素生效问题求助

问题根因

你遇到的问题是HTML规范中id属性全局唯一性要求被破坏导致的:
循环生成的所有开关<input>都使用了相同的id="switch",而<label>的for属性只会匹配页面内第一个对应id的元素。因此点击任意行的开关标签,都会仅触发第一行checkbox的状态变化,对应只有首行的开关动画生效。

修复方案

利用Jinja循环自带的loop.index变量(代表当前循环的次数,从1开始递增),给每个开关生成唯一的id,同时对应修改label的for属性即可。

修改对应单元格的代码如下:

<td>
  <!-- 用loop.index生成唯一id -->
  <input type="checkbox" name="switch_{{ loop.index }}" id="switch_{{ loop.index }}">
  <label for="switch_{{ loop.index }}"></label>
</td>

额外优化建议

你当前代码中还有多处重复id,比如id="table-heading"、id="table-cell"等,这些重复id也可能导致后续样式、JS交互出现异常,建议将重复使用的标识改为class属性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:45:03