【问题标题】:Hide complex column with colspan and rowspan with jQuery使用 jQuery 隐藏带有 colspan 和 rowspan 的复杂列
【发布时间】:2016-04-27 05:57:49
【问题描述】:

我正在构建一个包含很多 colspanrowspan td 的或多或少的复杂表。现在我想在那些粉红色的列上创建一个 onclick 事件。因此,只要您单击其中一个具有 collapse 类的 + 列,我就想隐藏列。例如,当我点击第一个+ 时,我想隐藏整个First driver 列,包括Driver Namefirst-driver-01 em>、驱动程序ID

nth-child(x) 并没有真正帮助,因为它不会忽略 col- 和 rowspans。我尝试将td 分组在一个单独的标签中,如下所示:

    <tr>
        <td rowspan="3">CIM</td>
        <!-- First driver -->
        <group class="first-driver-01">
            <td colspan="4">First driver</td>
        </group>
        <td rowspan="3" class="collapse">+</td>
        <group class="second-driver-213">
            <td colspan="4">Second driver</td>
        </group>
        <td rowspan="3" class="collapse">+</td>
    </tr>

不幸的是,我的 chrome 浏览器对标签是这样的:

【问题讨论】:

  • 您可以为每个要隐藏的表格单元格添加一个类。
  • @Blazemonger 这就像我最后的出路,但它成功了!

标签: javascript jquery html css


【解决方案1】:

我会使用 div 和 CSS 来做类似的事情,并将它们设置为表格。我不打算重新创建你的整个表,但这里是我使用较小的表制作的一个示例,我会让你玩得开心。

Javascript

document.getElementById("clickme").onclick = function(){
      var divsToHide = document.getElementsByClassName("hide"); //divsToHide is an array
    if(document.getElementById("clickme").innerHTML == "-"){
    for(var i = 0; i < divsToHide.length; i++){
        divsToHide[i].style.visibility = "hidden"; // or
        divsToHide[i].style.display = "none"; // depending on what you're doing
        } 
       document.getElementById("clickme").innerHTML = "+"
    }
    else {
           for(var i = 0; i < divsToHide.length; i++){
            divsToHide[i].style.visibility = "visible"; // or
            divsToHide[i].style.display = "table-cell"; // depending on what you're doing
          } 
           document.getElementById("clickme").innerHTML = "-"

        }
};

HTML

<div class="table">
  <div class="row">
    <div class="cell header">Team</div>
    <div class="cell header">Wins</div>
    <div class="cell header">Losses</div>
    <div class="cell header hide ">Pct</div>
  </div>
  <div class="row">
    <div class="cell">Bulls</div>
    <div class="cell">29</div>
    <div class="cell">18</div>
    <div class="cell hide">.617</div>
  </div>
  <div class="row">
    <div class="cell">Pacers</div>
    <div class="cell">28</div>
    <div class="cell">19</div>
    <div class="cell hide">.596</div>
  </div>
  <div class="row">
    <div class="cell"></div>
    <div class="cell"></div>
    <div class="cell"></div>
    <div class="cell" id="clickme">-</div>
  </div>

CSS

.table {
    display:table;
}
.row {
    display:table-row;
}
.cell {
    display:table-cell;
    padding:2px;
}
.header {
    font-weight:bold;
    text-align:center;
}

Fiddle Here

我希望这会有所帮助, 祝你好运

【讨论】:

  • 感谢您的回复。我做了不同的事情,因为表结构变得非常复杂。我刚刚在每个单元格中添加了一个具有组 ID 的类。
  • 啊,很高兴看到您成功了,没问题。如果对您有帮助,请采纳答案。
猜你喜欢
  • 1970-01-01
  • 2018-11-02
  • 2018-03-27
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多