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

为什么Bootstrap Collapse循环迭代时无法展示对应的不同项?

问题根因

  1. 所有折叠元素共用了同一个固定ID rel,Bootstrap的collapse组件会根据href锚点匹配对应ID的DOM元素,重复ID场景下只会命中第一个出现的目标元素,因此只有第一项点击生效,后续所有点击都会触发第一个折叠项的显隐。
  2. 嵌套循环场景下,内层循环的loop.index默认指向当前内层循环的计数,要获取外层循环的索引需要通过Jinja2的循环层级语法访问。

修复方案

Jinja2支持两种方式获取外层循环的索引:

  • 方式1:给外层循环设置别名,内层直接调用别名的index属性,可读性更高
  • 方式2:直接通过loop.parent.index访问上层循环的索引

修正后完整代码

{% for data_dict in data_list %}
    {# 给外层循环设置别名,内层可直接调用 #}
    {% set outer_loop = loop %}
    {% for key, data in data_dict.items() %}
        {% if data is iterable and data is mapping %}
        <dd>
            <a data-toggle="collapse" href="#rel-{{ outer_loop.index }}">{{ data.keys()|join(', ') }}</a>
            <div id="rel-{{ outer_loop.index }}" class="collapse">
                {{ data.values()|join(', ') }}
            </div>
        </dd>
        {% endif %}
    {% endfor %}
{% endfor %}

额外优化说明

  • 新增了data is mapping的判断,避免字符串等可迭代非字典类型触发折叠逻辑
  • 用join过滤器将dict_keys、dict_values对象转为普通字符串,避免前端展示多余的对象标识

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:24:04