【问题标题】:Show/Hide row in a table using checkboxes使用复选框显示/隐藏表格中的行
【发布时间】:2016-06-29 00:44:08
【问题描述】:

这是我正在制作的一个页面,用于展示 Infinity 的所有黑客程序(微型战争游戏)。

http://wargames.malgol.se/infinity/hacking/

我正在寻找的功能是通过单击 HACKING DEVICE: 和 UPGRADE: 下的各种复选框来显示连接到它们的表行以及它的连接图标。例如,如果我选中“Hacking Device Plus”,则连接到它的所有行和程序都会显示出来,并且它们都会在“设备”列中显示浅绿色的“正方形”,如果选择更多复选框和一个以上的黑客设备有同一行的两个“正方形”都会显示。

如果未选中任何复选框,则将显示所有行。

我还希望每个奇数行和偶数行都有不同的颜色。现在我正在使用它来更改颜色,但我无法使用我在此处找到的解决方案来更改活动行颜色(见下文)。

table#hackingTable tr:nth-child(odd) td {background:#303030;color:#F7F7F7;}
table#hackingTable tr:nth-child(even) td {background:#404040;color:#F7F7F7;}

对于更改颜色的活动行,我尝试了我在此处找到的解决方案。 Tip://stackoverflow.com/questions/19970983/change-background-color-of-a-table-row-on-click

虽然我有关于使用相同的解决方案来隐藏未检查的行,但在测试后只隐藏我用于奇数/偶数颜色的 css 不起作用,因为它可以在彼此旁边显示相同的颜色当我隐藏在中间的行时。

现在我正在使用类来显示哪一行连接到什么黑客设备和更新。

<tr class="hdRow hdpRow">

这是我用于所有方块的代码。

    <td>
        <div class="cube hdCube"></div>
        <div class="cube hdpCube"></div>
    </td>

我希望我现在更清楚我想要什么,而不是我最后一次在这里问什么。 =)

【问题讨论】:

  • 所以我发现这个问题几乎可以解决。问题是,如果我取消选中仍然检查过的黑客设备使用的程序,该行仍然会消失。有没有办法检查该行是否有一个以上的类,如果它们中的任何一个仍然被检查,保持它可见? stackoverflow.com/questions/18190233/…
  • 我的解决方案仍然有效,您只是不能将checkbox's 放在标签内、表格内......它们需要 @ 987654330@ 在标记中,否则你不能使用他们的checked 状态。我将再次更新我的答案,显示明确
  • 更新了我的答案,显示您需要如何构建标记
  • 太好了,谢谢!它现在确实有效。我唯一遇到的问题是在设备列中隐藏不同颜色的方块。例如,如果我只检查了突击,我只希望显示丁香方块。 malgol.se/labs/wargames/infinity/hacking(抱歉回复晚了,忙于其他实际工作)

标签: jquery css checkbox show-hide tablerow


【解决方案1】:

这是一个开始

请注意,输入需要在标记中的标签和表格之前才能使用其checked 状态

table {
  border-collapse: collapse;
}
tbody tr {
  background: #eee;
  border-bottom: 1px solid #fff;
}
tr, td {
  padding: 10px;
}
input,
tbody tr {
  display: none;
}
label {
  display: inline-block;
  padding: 6px;
}
label:after {
  content: '\00a0';
  text-align: center;
  display: inline-block;
  border: 1px solid;
  width: 20px;
  margin-left: 5px;
}

#inp1:checked ~ table label[for="inp1"]:after,
#inp2:checked ~ table label[for="inp2"]:after,
#inp3:checked ~ table label[for="inp3"]:after {
  content: 'v';
}
#inp1:checked ~ table .nr1,
#inp2:checked ~ table .nr2,
#inp3:checked ~ table .nr3 {
  display: table-row;
}
<input id="inp1" type="checkbox">
<input id="inp2" type="checkbox" checked="checked">
<input id="inp3" type="checkbox">

<table>
  <thead>
    <tr colspan="3">
      <td>
        <label for="inp1">Toggle 1</label>
        <label for="inp2">Toggle 2</label>
        <label for="inp3">Toggle 3</label>
      </td>
    </tr>
  </thead>
  <tbody>
    <tr class="nr1">
      <td><div>Row 1</div></td>
      <td><div>...</div></td>
      <td><div>...</div></td>
    </tr>
    <tr class="nr2">
      <td><div>Row 2</div></td>
      <td><div>...</div></td>
      <td><div>...</div></td>
    </tr>
    <tr class="nr3">
      <td><div>Row 3</div></td>
      <td><div>...</div></td>
      <td><div>...</div></td>
    </tr>
  </tbody>
</table>

【讨论】:

  • 等等什么?这都是CSS?甚至不知道这是可能的。我会尝试一下。谢谢! =)
  • 我正在使用 php 和 require_once 来请求一个 php 文件,其中我有表格,另一个地方有复选框菜单。我发现的第一个问题是,如果我将它们放在请求的 php 文件中,复选框将不起作用,前提是我将它们放在与表格相同的位置。第二个是正方形与包含表格内文本的 div 具有相同的填充。
  • @MAlgol 给我看渲染的 html .. 这完全是关于表格和输入在标记结构中的关系
  • @MAlgol 我们在谈论所有不同的“黑客设备”复选框吗?
  • @MAlgol 如果是,您需要将它们移到li 之外,并将它们放在我的测试inp1 所在的位置,并在它们的位置使用标签作为视觉复选标记.. . 将很快更新我的答案,展示如何完成
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
相关资源
最近更新 更多