【问题标题】:open text for only one button, not for all只为一个按钮打开文本,而不是全部
【发布时间】:2018-12-20 06:33:19
【问题描述】:

我使用bootstrap collapse 并在我的模板中循环显示数据

{% for text in imageTitles %}
  <div class="span4 collapse-group">
    <div class="text-center">
      <p><a class="btn btn-md btn-outline-dark btn-square" href="#">Check &raquo;</a></p>
    </div>
    <div class="collapse" id="collapseExample">
      <div class="card card-body">
        {{text}}
      </div>
    </div>
    <script>
      $('.btn').on('click', function(e) {
        e.preventDefault();
        var $this = $(this);
        var $collapse = $this.closest('.collapse-group').find('.collapse');
        $collapse.collapse('toggle');
      });
    </script>
    {% endfor %}

当我按下按钮时,每个按钮的文本都会打开,但我只需要一个,如何正确编写函数$('.btn').on('click', function(e)以进行正确操作

【问题讨论】:

  • 您的意思是,如果您点击Check,您的所有{{ text }} 都会显示?
  • 是的,整个页面上每个按钮的文本。有许多带有按钮和隐藏文本的块
  • 您的{{ text }} 是对象吗?还是只是一个文本列表?
  • 只是一个文本列表
  • 然后使用{{ forloop.counter }} 在您的按钮和目标div 中添加id。然后在你的 jquery 函数中使用它从 $(this) 中找到目标 div

标签: python jquery django twitter-bootstrap


【解决方案1】:

使用{{ forloop.counter }} 为您的 btn 添加 id 和目标 div。

通过 btn 的 id 号找到你的目标 div。

此外,您不必循环所有脚本。一个人就够了。

这是一个例子。你应该自己更新。

{% for text in imageTitles %}
  <div class="span4 collapse-group">
    <div class="text-center">
      <p><a class="btn btn-md btn-outline-dark btn-square" href="#" id="{{ forloop.counter }}">Check &raquo;</a></p>
    </div>
    <div class="collapse" id="collapseExample" id="txt_{{ forloop.counter }}">
      <div class="card card-body">
        {{text}}
      </div>
    </div>
{% endfor %}
<script>
  $('.btn').on('click', function(e) {
    e.preventDefault();
    var num = $(this).attr('id');
    var $collapse = $("#txt_" + num);
    // var $this = $(this);
    // var $collapse = $this.closest('.collapse-group').find('.collapse');
    $collapse.collapse('toggle');
  });
</script>

【讨论】:

  • 请自行调试。在变量后添加console.log(num)console.log($collapse) 看看发生了什么
  • 您应该在div.collapse 中添加id,而不是在card-body 中。我会更新我的答案
  • 问题依然存在 :-(
  • 您是否在脚本中设置了console.log?我不是javascript专业,所以请自己调试。找出脚本中哪个值为 null
  • 刚刚查过,console.log(num);,被多次调用,按钮索引被多次调用到想要的值。例如,我有 9 个按钮,在控制台中我看到 9 次调用索引为 1,但随后 8 次调用索引为 2
猜你喜欢
  • 2020-01-21
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
相关资源
最近更新 更多