javascript - 默认情况下以折叠方式开始 HTML 行

标签 javascript html css html-table

我已经实现了这个例子的我的版本(使用 Vapor Swift & Leaf)并且它工作正常:Simple example of collapsible rows in HTML/CSS/JS

但是,我希望所有可折叠的行在开始时默认隐藏。我不太了解 JS,但我认为修改它不会有帮助:

$(document).ready(function() {
    $('[data-toggle="toggle"]').change(function(){
        $(this).parents().next('.hide').toggle();
    });
});

我是否需要制作不同的 JS 脚本?如果需要,它将如何找到要隐藏的正确行(以及如何隐藏它们)?

最佳答案

由于您使用的是 jQuery库,您可以使用 jQuery 选择器来选择要隐藏的元素,并在文档加载时隐藏它们:

看起来您想要在隐藏/显示之间切换的行都具有 .hide 类。所以你可以使用它作为选择器:

$('.hide').toggle();  // hide rows initially

运行下面的代码片段,看看它是如何工作的。最初,行是隐藏的。如果您单击“会计”或“管理”,这些行将展开。

$(document).ready(function() {
  $('.hide').toggle();  // hide rows initially
  $('[data-toggle="toggle"]').change(function() {
    $(this).parents().next('.hide').toggle();
  });
});
table {
  width: 750px;
  border-collapse: collapse;
  margin: 50px auto;
}

th {
  background: #3498db;
  color: white;
  font-weight: bold;
}

td,
th {
  padding: 10px;
  border: 1px solid #ccc;
  text-align: left;
  font-size: 18px;
}

.labels tr td {
  background-color: #2cc16a;
  font-weight: bold;
  color: #fff;
}

.label tr td label {
  display: block;
}

[data-toggle="toggle"] {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>Regian</th>
      <th>Q1 2010</th>
      <th>Q2 2010</th>
      <th>Q3 2010</th>
      <th>Q4 2010</th>
    </tr>
  </thead>
  <tbody>
    <tbody class="labels">
      <tr>
        <td colspan="5">
          <label for="accounting">Accounting</label>
          <input type="checkbox" name="accounting" id="accounting" data-toggle="toggle">
        </td>
      </tr>
    </tbody>
    <tbody class="hide">
      <tr>
        <td>Australia</td>
        <td>$7,685.00</td>
        <td>$3,544.00</td>
        <td>$5,834.00</td>
        <td>$10,583.00</td>
      </tr>
      <tr>
        <td>Central America</td>
        <td>$7,685.00</td>
        <td>$3,544.00</td>
        <td>$5,834.00</td>
        <td>$10,583.00</td>
      </tr>
    </tbody>
    <tbody class="labels">
      <tr>
        <td colspan="5">
          <label for="management">Management</label>
          <input type="checkbox" name="management" id="management" data-toggle="toggle">
        </td>
      </tr>
    </tbody>
    <tbody class="hide">
      <tr>
        <td>Australia</td>
        <td>$7,685.00</td>
        <td>$3,544.00</td>
        <td>$5,834.00</td>
        <td>$10,583.00</td>
      </tr>
      <tr>
        <td>Central America</td>
        <td>$7,685.00</td>
        <td>$3,544.00</td>
        <td>$5,834.00</td>
        <td>$10,583.00</td>
      </tr>
      <tr>
        <td>Europe</td>
        <td>$7,685.00</td>
        <td>$3,544.00</td>
        <td>$5,834.00</td>
        <td>$10,583.00</td>
      </tr>
      <tr>
        <td>Middle East</td>
        <td>$7,685.00</td>
        <td>$3,544.00</td>
        <td>$5,834.00</td>
        <td>$10,583.00</td>
      </tr>
    </tbody>
  </tbody>
</table>

关于javascript - 默认情况下以折叠方式开始 HTML 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57541333/

相关文章:

javascript - 如何在 SAPUI5 中动态地将样式应用于标签元素

html - 使用 CSS :empty pseudoclass 格式化 Razor cshtml 文件

javascript - 使用 Javascript 和 asp.net 的表可见性

css - Autoprefixer 与 LESS/Sass 混合?

php - 将 MailChimp 集成到电子商务购物车中

javascript - 使用 Protractor 测试 Angularjs 警报

javascript - 文档类型是如何破坏我的 JavaScript 的?

javascript - 从多个位置加载资源(例如 JavaScript 脚本)作为后备?

html - parent 的字体大小不改变 p child

javascript - 获取所选单选按钮的组合以在单击按钮时显示消息