【问题标题】:Twitter Bootstrap: How to create a dropdown button with an accordion inside it?Twitter Bootstrap:如何创建一个带有手风琴的下拉按钮?
【发布时间】:2013-12-17 21:17:33
【问题描述】:

在 Twitter Bootstrap 中,我正在尝试创建一个按钮下拉菜单,其中包含一个手风琴。

目的是以简洁的形式呈现一长串项目(即避免用户长时间向下滚动)。

在下拉 div 中包含手风琴 div 的直接方法不起作用..:

<div class="dropdown">
    <a data-toggle="dropdown" href="#">Dropdown trigger</a>
    <div class="dropdown-menu" role="menu" aria-labelledby="dLabel" id="accordion">
    <h3>Unit 1</h3>
    <div>
      <p>item a</p>
      <p>item b</p>
    </div>
    <h3>Unit 2</h3>
    <div>
      <p>item c</p>
      <p>item d</p>
      <p>item e</p>
    </div>
  </div>            
</div>

任何想法如何实现这一点?

【问题讨论】:

    标签: jquery-ui twitter-bootstrap twitter-bootstrap-3 jquery-ui-accordion


    【解决方案1】:

    您可以使用以下方法在下拉菜单中插入手风琴:

    你需要添加几行 JS 来防止 Dropdown 事件破坏 Collapse 事件。

    Working example on Bootply

    <div class="dropdown dropdown-accordion" data-accordion="#accordion">
      <a data-toggle="dropdown" href="#" class="btn btn-primary">Dropdown trigger <span class="caret"></span></a>
      <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
        <li>
          <div class="panel-group" id="accordion">
            <div class="panel panel-default">
              <div class="panel-heading">
                <h4 class="panel-title">
                  <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
                    Unit 1
                  </a>
                </h4>
              </div>
              <div id="collapseOne" class="panel-collapse collapse">
                <div class="panel-body">
                  <a href="#">Item a</a><br>
                  <a href="#">Item b</a>
                </div>
              </div>
            </div>
            <div class="panel panel-default">
              <div class="panel-heading">
                <h4 class="panel-title">
                  <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
                    Unit 2
                  </a>
                </h4>
              </div>
              <div id="collapseTwo" class="panel-collapse collapse">
                <div class="panel-body">
                  <a href="#">Item a</a><br>
                  <a href="#">Item b</a><br>
                  <a href="#">Item c</a>
                </div>
              </div>
            </div>
          </div>
        </li>
      </ul>
    </div>
    
    .dropdown-accordion .panel-heading {
      padding: 0;
    }
    .dropdown-accordion .panel-heading a {
      display: block;
      padding: 10px 15px;
    }
    
    // Collapse accordion every time dropdown is shown
    $('.dropdown-accordion').on('show.bs.dropdown', function (event) {
      var accordion = $(this).find($(this).data('accordion'));
      accordion.find('.panel-collapse.in').collapse('hide');
    });
    
    // Prevent dropdown to be closed when we click on an accordion link
    $('.dropdown-accordion').on('click', 'a[data-toggle="collapse"]', function (event) {
      event.preventDefault();
      event.stopPropagation();
      $($(this).data('parent')).find('.panel-collapse.in').collapse('hide');
      $($(this).attr('href')).collapse('show');
    })
    

    【讨论】:

    • 手风琴第一次打开时 - 它已完全展开。再次重新打开后 - 它处于折叠模式。如何防止手风琴在第一次打开时膨胀?
    • 我只是找到了一个解决方法:将.find('.panel-collapse').collapse('hide') 都更改为.find('.panel-collapse.in').collapse('hide')(Bootply 更新)
    • bootply 示例在 Firefox 中不起作用。它过早关闭。
    • 切换在 IE 中无法正常工作。 Question这里
    • 如何在 Marionette Itemview 中编写该事件?
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 2014-02-28
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2012-10-14
    相关资源
    最近更新 更多