<table>
<tbody>
<tr class = "row">
<td class = "A"> </td>
<td class = "A"> </td>
<td class = "A B"> </td>
</tr>
<tr class = "row">
<td class = "A B"> </td>
<td class = "A B"> </td>
<td class = "A B"> </td>
</tr>
</tbody>
</table>
如果所有子项td
包含类B
,如何隐藏最后一行。
我有一个动态生成行的日历,我想要隐藏不属于当前月份的单元格(由类“B”表示)。如果所有孩子都满足这个条件,我想隐藏整行。
目前我有
tbody {
tr:last-child {
display: none;
}
}
但这不会起作用,因为有时最后一行是部分填充的,我不想隐藏它。
不确定纯CSS选择器是否可行。
答案 0 :(得分:2)
CSS代表级联样式表,因此无法为父节点设置样式。 但即将推出的CSS4可能带有以下解决方案:has()伪类,因此您的代码可能如下所示:
$scope.savesGraphUserDetail.splice(index, 1);
// ^
如果第一个&lt; td&gt;在最后&lt; tr&gt;有B级,那么整行不会显示。
这是未来,现在你可以使用JS或服务器端解决方案。
答案 1 :(得分:1)
由于我使用React,我试图避免使用Javascript来操作dom元素。我发现了一种使用CSS
的方法tbody {
tr:last-child {
td:first-child.B {
display:none;
}
td:first-child.B ~ td {
display:none;
}
}
}
tr:last-child
和td:first-child.B
在最后一行中,不会显示包含B
课程的第一个孩子 td:first-child.B ~ td
在同一最后一行中,第一个包含B类的子节点的兄弟姐妹也不会显示
答案 2 :(得分:0)
你可以用javascript
来做
let rows = document.querySelectorAll('.row');
rows.forEach((row) => {
let cols = row.querySelectorAll('td');
let colsB = row.querySelectorAll('td.B');
if (cols.length == colsB.length) {
row.style = "display: none;";
}
})
&#13;
<table>
<tbody>
<tr class = "row row1">
<td class = "A">a </td>
<td class = "A">a </td>
<td class = "A B">b </td>
</tr>
<tr class = "row row2">
<td class = "A B">b </td>
<td class = "A B">b </td>
<td class = "A B">b </td>
</tr>
</tbody>
</table>
&#13;
它会检查td
的总数是否等于B类td
的总数,然后再隐藏该行。