我在HTML中使用KnockoutJS将表格行的可见性与特定的可观察值数据绑定,这些值在我附带的JavaScript中定义。我的表格如下所示:
<table class="myTable">
<tr data-bind="if: thisRowVisible"> <!-- Arbitrary data here --> </tr>
<tr data-bind="if: thatRowVisible"> <!-- Arbitrary data here --> </tr>
<tr data-bind="if: anotherRowVisible"> <!-- Arbitrary data here --> </tr>
<!-- More rows defined here -->
</table>
应用程序运行时,可以使用这些数据绑定的if
值来隐藏或显示表格的行。为了给表格的行设置交替颜色(斑马线/条纹),我在我的CSS中定义了以下内容:
.myTable tr:nth-child(even) td {
background-color: black;
}
.myTable tr:nth-child(odd) td {
background-color: gray;
}
通常,这个 CSS 可以正确地为行设置样式,偶数行是黑色的,奇数行是灰色的。但是当使用 Knockout data-bindings 时会出现问题。
例如,假设索引为 #2 的行因为数据绑定被隐藏了。即使该行被隐藏,该行的
<tr>
定义仍然存在于表中。这会打乱交替行颜色。由于索引 #2 仍然存在但是被隐藏了,因此它仍然包含在交替行颜色中。这意味着两个灰色的行会重叠在一起。在使用 KnockoutJS 模式的同时实现正确的交替表行颜色有什么方法吗?是否有一些 KO 数据绑定的技巧可以从标记中完全删除隐藏的
<tr>
,以便正确应用 CSS 样式?
<!-- ko 'if': thisRowVisible --><tr> <!-- 在此处添加任意数据 --> </tr><!-- /ko -->
? - Vladimir