将不同样式应用于PrimeFaces SelectOne菜单上的选项

将不同样式应用于PrimeFaces SelectOne菜单上的选项,primefaces,Primefaces,PrimeFacesp:selectOneMenuitems有一个名为NoSelectOption的属性,当未选择任何选项时,基本上会选择该属性 我希望我的p:selectOneMenu在选择或不选择某个值时看起来有所不同,但在选择或不选择p:selectOneMenu选项时,p:selectOneMenu的dome元素上HTML中没有任何更改 有什么想法吗?我看不出您遗漏了什么,但是CSS类ui noselection选项被应用于no select选项的列表项(li)。通过以下方式进行测试:

PrimeFaces
p:selectOneMenu
items有一个名为
NoSelectOption
的属性,当未选择任何选项时,基本上会选择该属性

我希望我的
p:selectOneMenu
在选择或不选择某个值时看起来有所不同,但在选择或不选择
p:selectOneMenu
选项时,
p:selectOneMenu
的dome元素上HTML中没有任何更改


有什么想法吗?

我看不出您遗漏了什么,但是CSS类
ui noselection选项
被应用于no select选项的列表项(
li
)。通过以下方式进行测试:

<p:selectOneMenu>
  <f:selectItem itemValue="0" itemLabel="0" noSelectionOption="true"/>
  <f:selectItem itemValue="1" itemLabel="1"/>
  <f:selectItem itemValue="2" itemLabel="2"/>
</p:selectOneMenu>

这个选项不在列表中的固定位置吗?您应该能够使用CSS选择器对其进行样式设置。在ajax事件上使用jquery来查找所选选项并对祖先html进行样式设置elements@JasperdeVries没有任何内容表示DOM元素中select值的索引。@Kukeltje添加Javascript的问题是,如果PrimeFaces更新某些组件,我不知道如何捕捉页面的每一个重新加载项(不刷新)来设置事件。然后你有两个可能的解决方案:1)推动css规范委员会实现祖先选择器。2) 重写PF SelectOneMenu渲染器,以便在主div中动态添加一个类(如果有选择)。按照我的理解,OP希望设置“容器”的样式(例如,如果未选择任何内容,则将输入字段设置为黄色)。这只能由父选择器完成。但是现在我想起来了,
p:selectOneMenu
上的
style=“#{selection.count>0}”
也应该可以工作,但是你可能是对的,我只是认为这个问题更复杂,因为你的答案太复杂了obvious@Kukeltje啊,我想你是对的。在这种情况下,如果绑定值为空,我将为组件设置一个类。这是关于在标签上设置一个类,该标签显示为实际值(当选项列表未显示时),而不是列表中的选项。
.ui-noselection-option {
    color: red;
}