双 false 表示带有条件运算符的内联 if-else



如果 td 没有值,我正在尝试隐藏输入字段。

我知道我们可以有这样的条件:

${condition ? true : false}

但是我怎么能有这样的内联运算符呢?

${condition ? true : false && false}

例:

${JsonObject ? JsonObject.Description : " " && $('#textbox').removeattr("style").hide()}

html 类似于这样:

`<td>
${JsonObject ? JsonObject.Description : " " && $('#textbox').removeattr("style").hide()}
</td>
`<div><input id="textbox"></div>

如果我理解正确,您希望真实的结果是描述,而虚假的结果是" "的,并且具有从#textbox中删除样式属性并将其隐藏的副作用。

我强烈建议不要这样做。像这样的副作用非常难以调试和维护。

但如果你真的想,先做副作用:

`<td>
${JsonObject ? JsonObject.Description : $('#textbox').removeattr("style").hide() && " "}
</td>
`<div><input id="textbox"></div>

这是有效的,因为hide返回 jQuery 对象,这是真实的,所以(object) && " "表达式会导致" "。或者正如 James Long 指出的那样,你可以改用逗号运算符,然后hide的返回值就无关紧要了:${JsonObject ? JsonObject.Description : ($('#textbox').removeattr("style").hide(), " ")}(你实际上不需要这些(),但它已经足够混乱了,没有它们就更令人困惑了,所以......

但同样,我不会。相反,我只会做:

`<td>
${JsonObject ? JsonObject.Description : " "}
</td>
`<div><input id="textbox"></div>

。然后在此模板文本之前或之后,有

if (!JsonObject) {
$('#textbox').removeattr("style").hide();
}

最新更新