如何获取p:autocomplete元素的CSS选择器?含表格内场景
如何获取p:autocomplete元素的CSS选择器?针对DataTable内的组件怎么写?
嘿,我来帮你搞定PrimeFaces里p:autocomplete的CSS选择器问题~
一、通用获取p:autocomplete CSS选择器的方法
其实最快最靠谱的方式是借助浏览器开发者工具:
- 按下
F12打开开发者工具,切换到「元素」标签页 - 在页面上找到你的autocomplete输入框,右键点击它,选择「复制」→「复制选择器」,浏览器会直接生成可用的CSS选择器
- 要是你想手动写,得先摸清楚PrimeFaces的组件渲染规则:JSF组件会被转换成普通HTML元素,
p:autocomplete渲染后会自带ui-autocomplete这个核心类,而且它的ID会被上层命名容器(比如dataTable、form)拼接,格式大概是上层容器ID:行索引:autocomplete
二、针对你提供的DataTable代码的CSS选择器写法
先回顾下你的代码结构:
<p:dataTable id="tabelaItens" value="#{cadastroPedidoBean.itens}" var="item"> <p:column headerText="SKU" style="text-align: center; width: 100px"> <p:inputText size="8" /> </p:column> <p:column headerText="Produto"> <p:autoComplete id="autocomplete" /> </p:column> </p:dataTable>
根据不同需求,有几种实用写法:
1. 选中DataTable内所有的p:autocomplete组件
- 父容器ID+组件类定位:
#tabelaItens .ui-autocomplete - ID后缀匹配(因为每行的autocomplete ID最后都是
autocomplete):#tabelaItens [id$="autocomplete"]
2. 选中DataTable中某一行的p:autocomplete组件
比如要选第1行(索引从0开始计数)的autocomplete,写法是:#tabelaItens:0:autocomplete
注意:如果dataTable还嵌套在form里,ID会被form的ID拼接,比如formId:tabelaItens:0:autocomplete,具体可以用开发者工具查看渲染后的真实ID
3. 通过列位置定位
因为「Produto」是第二列,所以可以用列的位置来精准定位:#tabelaItens td:nth-child(2) .ui-autocomplete
小提示
如果页面上有多个autocomplete组件,尽量结合父容器的ID来缩小选择范围,避免误选到其他无关的组件。
内容的提问来源于stack exchange,提问作者BicaBicudo
相关产品推荐
相关产品推荐

