Javascript 引导CSS表条带化,如果绑定,则不能使用敲除
假设我有下表,它与引导css和敲除一起工作:Javascript 引导CSS表条带化,如果绑定,则不能使用敲除,javascript,html,css,twitter-bootstrap,knockout.js,Javascript,Html,Css,Twitter Bootstrap,Knockout.js,假设我有下表,它与引导css和敲除一起工作: <table style="cursor:pointer;" class="table table-striped table-bordered table-hover table-condensed"> <tbody data-bind="foreach: items"> <tr> <td data-bind="text: name"></td&
<table style="cursor:pointer;" class="table table-striped table-bordered table-hover table-condensed">
<tbody data-bind="foreach: items">
<tr>
<td data-bind="text: name"></td>
</tr>
<tr data-bind="if: somecondition">
<td>test</td>
</tr>
</tbody>
</table>
测试
现在,如果我将
“somecondition”
设置为返回“true”
,我可以看到结果表中有斑马条纹。一切都很好。但是如果我将条件更改为“false”,很明显,行将从屏幕上消失,但我根本看不到任何交替的行颜色。有人知道我为什么以及如何制作所示的交替行颜色吗?问题是,敲除不控制它所在的元素是否存在,只控制该元素的内容是否存在。(这在文档中可能没有那么清楚,但主要是在“注意:使用”if“而不使用容器元素”位中)。因此,示例中的if
将控制tr
的内容是否存在,但是tr
无论如何都会存在,给您一个tr
,其中绝对没有任何内容,这是引导条带化所做的:n个子工作的一部分,但不会占用任何垂直空间。(您可以通过呈现页面,然后右键单击表并在任何现代浏览器中使用“Inspect element”查看DOM中的实际内容来看到这一点。)
要根据条件使整行存在/不存在,请使用KO包裹该行:
测试
未正确条带化的原始代码示例:
使用虚拟元素,正确条带化的示例:只需从您的表中删除t body标记,即可顺利工作
<!-- ko: if: somecondition -->
<tr>
<td>test</td>
</tr>
<!-- /ko -->