【问题标题】:Adding a class to html element conditionally with grails tags使用 grails 标签有条件地向 html 元素添加类
【发布时间】:2009-11-20 19:52:40
【问题描述】:

使用标签,您可以在 gsp 中执行此操作:

<g:if test="${someBean?.aCondition}">
  <div class="aSection">
  ...
  </div>
</g:if>

我真正想做的是添加第二个“类”,它包含基于“${someBean?.aCondition}”值的“display:none”或“display:block”属性。

最终的 html 是这样的:

<div class="aSection hiddenItem">
...
</div>

(如果 ${someBean?.aCondition} 为真,则 div 的类将具有 'shownItem')

对应的css:

.shownItem
{
  display: block;
}
.hiddenItem
{
  display: none;
}

有什么好的方法来实现这一点?

【问题讨论】:

    标签: grails gsp


    【解决方案1】:

    很简单:

    <div class="aSection ${someBean?.aCondition ? 'shownItem':'hiddenItem'}">
    ...
    </div>
    

    你可以在 html 属性中使用 ${} 块,没问题,只要确保不要在你的表达式块中使用任何双引号,因为这会混淆。

    【讨论】:

    • 怎么给这个加多个条件..可以吗
    • @Norman 这是 ${} 中的一个 groovy 代码块,所以你可以这样做: ${ (someBean.value2 == 2 && someBean.value3 == 3) ? 'shownItem' : 'hiddenItem' },但它越来越乱了。也许您可以在控制器中执行该逻辑,并使用模型将结果传递给 GSP?
    • 对于每个条件我想显示不同的类,而不仅仅是在两个选项之间可以做到吗?
    【解决方案2】:

    或者,如果您根本不希望在某些(例如自动对焦标签)条件下显示该属性:

    <input name="email" type="text" class="input-small" placeholder="Email" ${!flash.email ? 'autofocus="autofocus"':''} value="${flash.email}">
    

    【讨论】:

    • 我们可以为此使用多个条件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    相关资源
    最近更新 更多