【问题标题】:Bootstrap Collapse - Expand AllBootstrap 折叠 - 全部展开
【发布时间】:2014-03-30 05:34:43
【问题描述】:

我已经实现了 Bootstrap 3 Collapse。当单击任何一个标题链接时,客户希望所有目标块都展开。我试图实现this answer 的修改版本,但无法使其正常工作。

当点击任何一个目标块时,如何让所有目标块展开/折叠?

这是标记:

<div class="panel-group" id="accordion">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h6 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapse{entry_id}">{title}</a></h6>
        </div>
    </div>
    <div id="collapse{entry_id}" class="panel-collapse collapse">
      <div class="panel-body">
        {technology_body}
      </div>
   </div>
</div>

这是我尝试过的 JS:

$('#accordion').on('click', function() {
    if($('.collapse:not(.in)')) {
         $.collapse("toggle");
    }
});

【问题讨论】:

    标签: twitter-bootstrap-3 collapse


    【解决方案1】:

    我在这个问题上得到了一些离线帮助。要使用的脚本是

    $('#accordion .panel-default').on('click', function () {
        $('#accordion .panel-collapse').collapse('toggle');
    });
    

    这是 JSFiddle 示例 http://jsfiddle.net/gtowle/Vq6gt/1/

    【讨论】:

    • 这会切换可折叠元素的状态。如果我们扩展了元素并且我想扩展所有元素,它会折叠扩展的元素并扩展其他元素。有什么想法可以解决这个问题吗?
    • @jagmohan 要解决您的问题,只需使用 'show' 或 'hide' 而不是 'toggle' 作为 collapse() 函数的参数,如 docs 中所述。
    • 谢谢菲利普。我能够弄清楚。
    • 这个答案与 Phillipp 的评论相结合,帮助我找到了解决方案。谢谢!
    • 如何在 typescript 中处理 angular
    【解决方案2】:

    想通了。 当您想要折叠元素时 - 您需要指定 #accordion 的 content div, 在您的情况下(也是我的情况),该类是 .collapse

    $('#accordion .collapse').collapse('show');
    

    【讨论】:

      【解决方案3】:

      我需要有折叠/展开链接才能点击。这是我的解决方案:

          <a id="acollapse" href="javascript:jQuery('div .panel-collapse').collapse('hide'); jQuery('#acollapse').hide();jQuery('#aexpand').show();">Collapse All</a>';
      
          <a id="aexpand" href="javascript:jQuery('div .panel-collapse').collapse('show'); jQuery('#aexpand').hide(); jQuery('#acollapse').show();" style="display: none;">Expand All</a>
      

      【讨论】:

        【解决方案4】:

        试试这个对你有帮助。

        $('.panel-collapse').removeData('bs.collapse')
            .collapse({parent:false, toggle:false})
            .collapse('show')
            .removeData('bs.collapse')
            .collapse({parent:'#accordion', toggle:false});
        

        【讨论】:

          【解决方案5】:

          我们有办法解决这个问题。

          <div class="AccordionStyle panel-group" id="Security_accordion">
          <div class="ShowAllTabs"><a>SHOW ALL <i class="fa fa-chevron-down"></i></a></div>
              <!--= collapse-start =-->
              <div class="panel">
                  <div class="panel-heading">
                  <div href="#SecurityServices" data-toggle="collapse" data-parent="#Security_accordion" class="panel-title expand collapsed">
                      <div class="right-arrow pull-right icon_wrap"><i class="fa fa-chevron-down"></i></div>
                      <a>Security Services</a>
                  </div>
                  </div>
          
                  <div id="SecurityServices" class="panel-collapse collapse">
                  <div class="panel-body">
                      contents will go here...
                  </div>
                  </div>
              </div>
              <!--= END! =-->
          
          </div>
          
          <script>
          $('.panel-group .ShowAllTabs').click(function(){
              $(this).toggleClass('show_all_panels');
          
              if($(this).hasClass('show_all_panels'))
              {
                  $(this).closest('.panel-group').find('.panel-title').removeClass('collapsed').prop('aria-expanded',"true").attr('aria-expanded',"true");
                  $(this).closest('.panel-group').find('.panel-collapse').addClass('in').prop('aria-expanded',"true").attr('aria-expanded',"true").css("height","auto");
              }else
              {
                  $(this).closest('.panel-group').find('.panel-title').addClass('collapsed').prop('aria-expanded',"false").attr('aria-expanded',"false");
                  $(this).closest('.panel-group').find('.panel-collapse').removeClass('in').prop('aria-expanded',"false").attr('aria-expanded',"false");
              }
              setTimeout(function(){$( window ).resize();},200);
          });
          </script>
          

          【讨论】:

            【解决方案6】:
            $('#accordion .collapse').addClass("in")
            

            【讨论】:

            • 请在您的代码中添加一些解释。当一个元素被点击时它是如何触发的?
            【解决方案7】:
            $("#hideAccordianCards").click(function() { $('.collapse').removeClass('show'); });
            $("#showAccordianCards").click(function() { $('.collapse').addClass('show'); });
            

            【讨论】:

            • 本网站上通常不赞成仅使用代码的答案。您能否编辑您的答案以包含一些 cmets 或对您的代码的解释?解释应回答以下问题:它有什么作用?它是如何做到的?它去哪儿了?它如何解决OP的问题?请参阅:How to anwser。谢谢!
            猜你喜欢
            • 2020-01-25
            • 2011-04-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多