【问题标题】:Bootstrap 3 - Expanding an Collapsing Nested Table RowsBootstrap 3 - 展开折叠的嵌套表行
【发布时间】:2017-04-11 14:57:47
【问题描述】:

我有一个使用 Bootstrap 3 的网页。在这个页面中,我试图展示祖父母、父母和孩子之间的关系。为此,我有可以展开/折叠的表格行。我已经设置了 Bootply here。我的 HTML 如下所示:

<div id="grandparent" class="list-group-item">
    <div data-toggle="collapse" data-target="#grandparentContent" data-role="expander" data-group-id="grandparent">
        <ul class="list-inline">
            <li id="grandparentIcon">&gt;</li>
            <li>Grandparent</li>
        </ul>
    </div>

    <div class="collapse" id="grandparentContent" aria-expanded="true">
      <table class="table">
        <thead>
          <tr>
            <th></th>
            <th>Name</th>
            <th>Created On</th>
            <th>Last Modified</th>
          </tr>
        </thead>

        <tbody>
          <tr data-toggle="collapse">
            <td><div>&gt;</div></td>
            <td>Parent 1</td>
            <td>04/02/2017</td>
            <td>04/04/2017</td>
          </tr>

          <tr class="collapse">
            <td></td>
            <td>Child A</td>
            <td>04/01/2017</td>
            <td>04/05/2017</td>
          </tr>

          <tr class="collapse">
            <td></td>
            <td>Child B</td>
            <td>04/03/2017</td>
            <td>04/04/2017</td>
          </tr>          

          <tr data-toggle="collapse">
            <td><div>&gt;</div></td>
            <td>Parent 2</td>
            <td>04/03/2017</td>
            <td>04/10/2017</td>
          </tr>

          <tr class="collapse">
            <td></td>
            <td>Child X</td>
            <td>04/10/2017</td>
            <td>04/11/2017</td>
          </tr>          
        </tbody>
      </table>
    </div>
</div>

当祖父母或父母展开时,我试图将相关图标从“>”更改为“v”。但是,这不起作用。我不明白为什么。任何帮助表示赞赏。

【问题讨论】:

  • 看起来 show.bs.collapse 事件和 hidden.bs.collapse 从未被触发。你这些是引导程序触发的真实事件吗?

标签: javascript twitter-bootstrap


【解决方案1】:

你可以通过添加两件事来做你想做的事情:

  1. collapsed 类在每次单击祖父母或父母时切换,以表示它是展开还是折叠。
  2. 添加 CSS,以便在 collapsed 类处于活动状态时显示“>”,而在不活动时(展开)显示“v”。

Updated Bootply Here

您的主要问题是您的父行缺少 data-target,而且您也只是使用 jQuery 更改祖父图标。

键 jQuery

$('[data-toggle="collapse"]').on('click', function() {
  $(this).toggleClass('collapsed');
});

关键 CSS

.collapsed .icon-class:before {
    content: '>';
}
.icon-class:before {
    content: 'v';
}

【讨论】:

    【解决方案2】:

    这里是固定版本,代码改成你自己喜欢的。

    http://www.bootply.com/sCCEzKCLsI#

    但本质上 show.bs.collapsehide.bs.collapse 事件是从 .collapse 而不是 data-toggle="collapse" 元素触发的。

    【讨论】:

    • 为什么“父 1”和“父 2”在您的示例中不展开/折叠?
    【解决方案3】:

    除了WilomGfx's answer,您还需要将data-target 分配给表格行。

    预览here

    HTML

    <div id="grandparent" class="list-group-item">
        <div id="expander" data-toggle="collapse" data-target="#grandparentContent" data-role="expander" data-group-id="grandparent">
            <ul class="list-inline">
                <li id="grandparentIcon">&gt;</li>
                <li>Grandparent</li>
            </ul>
        </div>
    
        <div class="collapse" id="grandparentContent" aria-expanded="true">
          <table class="table">
            <thead>
              <tr>
                <th></th>
                <th>Name</th>
                <th>Created On</th>
                <th>Last Modified</th>
              </tr>
            </thead>
    
            <tbody>
              <tr data-toggle="collapse" data-target="#childOne">
                <td><div>&gt;</div></td>
                <td>Parent 1</td>
                <td>04/02/2017</td>
                <td>04/04/2017</td>
              </tr>
    
              <tr class="collapse" id="childOne">
                <td></td>
                <td>Child A</td>
                <td>04/01/2017</td>
                <td>04/05/2017</td>
              </tr>
    
              <tr class="collapse">
                <td></td>
                <td>Child B</td>
                <td>04/03/2017</td>
                <td>04/04/2017</td>
              </tr>          
    
              <tr data-toggle="collapse" data-target="#childTwo">
                <td><div>&gt;</div></td>
                <td>Parent 2</td>
                <td>04/03/2017</td>
                <td>04/10/2017</td>
              </tr>
    
              <tr class="collapse" id="childTwo">
                <td></td>
                <td>Child X</td>
                <td>04/10/2017</td>
                <td>04/11/2017</td>
              </tr>          
            </tbody>
          </table>
        </div>
    </div>
    

    脚本

    $('.collapse').on('show.bs.collapse', function () {
      var groupId = $('#expander').attr('data-group-id');
      console.log(groupId);
      if (groupId) {
        $('#grandparentIcon').html('v');
      }
    });
    
    $('.collapse').on('hide.bs.collapse', function () {
      var groupId = $('#expander').attr('data-group-id');
      console.log(groupId);
      if (groupId) {
        $('#' + groupId + 'Icon').html('>');
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2012-07-19
      • 2013-10-28
      • 2019-04-13
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      相关资源
      最近更新 更多