【问题标题】:Bootstrap accordian in a for loop jinja2for循环jinja2中的Bootstrap手风琴
【发布时间】:2021-07-16 07:47:18
【问题描述】:

我在 jinja 模板的 for 循环中使用引导手风琴元素。代码如下:

<div class="accordion" id="accordionExample">
    {% for article in articles %}
        <div class="accordion-item">
        <h2 class="accordion-header" id="{{article['Id']}}">
            <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
            {{article['Job Title']}}
            </button>
        </h2>
        <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">
            <div class="accordion-body">
            {{article['Description']}}
            </div>
        </div>
        </div>
    {% endfor %}

当我试图打开任何一个手风琴项目时,它只会打开第一个项目。有什么办法可以纠正这个吗?我已经尝试过问题中的方法:

Using Jinja2 (flask) to loop through a bootstrap accordian

但它不起作用。数据格式如下:

({'Id': 12941, 'Discipline': '0 Computational Science ', 'Job Title': 'High-performance Computing', 'Description': 'Some text here'}) 

编辑:基本上文章来自烧瓶后端,我需要以手风琴式结构呈现每篇文章。我复制了页面示例1中的代码:https://getbootstrap.com/docs/5.0/components/accordion/

【问题讨论】:

  • 请说清楚一点。 articles 会发生什么?你想做什么,举个例子?这样的事情有问题。这将使助手易于理解您的目标。
  • 所以,文章来自烧瓶后端。我不认为它是相关的,因为数据不是问题,渲染才是问题。
  • 不问从哪里来,问那里有什么?哪种数据类型,可能是dictionary?任何示例数据也很容易清楚地理解!
  • 它是一个字典,包含文章['Job Title'] 和文章['Description'] 的文本,都包含要呈现的文本。文章是字典列表。

标签: python html flask jinja2 bootstrap-5


【解决方案1】:
<div class="accordion" id="accordionExample">
{% for article in articles %}
    <div class="accordion-item">
    <h2 class="accordion-header" id="Arr{{article['Id']}}">
        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#Arr{{article['Id']}}" aria-expanded="false" aria-controls="Arr{{article['Id']}}">
        {{article['Job Title']}}
        </button>
    </h2>
    <div id="Arr{{article['Id']}}" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">
        <div class="accordion-body">
        {{article['Description']}}
        </div>
    </div>
    </div>
{% endfor %}

data-bs-toggle 应始终等于目标手风琴 ID。所以从我上面的代码中,{{article['Id']}} 将是 Bootstrap 识别每个手风琴元素的唯一 ID。 同样从您的代码中,第一个似乎是唯一打开的,因为所有 .accordion-collapse 具有相同的 ID。 注意: ID 属性在整个页面中应该是唯一的。没有两个元素应该具有相同的 ID。 HTML ID on w3schools

编辑:在 ID 中添加了 Arr,因为数字不是有效的 HTML ID。

【讨论】:

  • 我试过这个。现在所有元素都没有打开。
  • 检查您的元素并查看它们是否具有唯一 ID。您可以通过右键单击元素并单击“检查”来检查元素
  • 我收到错误“#12941 不是有效的选择器”
  • 检查更新的代码。对不起,我的错误,数字不被接受为有效的 HTML ID。从服务器向 ID 添加“Arr”以使其唯一且可接受。
猜你喜欢
  • 2019-11-22
  • 2022-01-13
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 2015-06-26
  • 2014-07-13
相关资源
最近更新 更多