参见英文答案 >
How to select JSF components using jQuery?
我如何在jquery中引用JSF组件,因为我不知道要引用的组件的id的前面的id?
我如何在jquery中引用JSF组件,因为我不知道要引用的组件的id的前面的id?
解决方法
您可以在视图中给出所有
NamingContainer组件,例如< h:form>,< h:dataTable>,< ui:repeat>< my:composite>固定的ID,以便HTML生成的客户端ID可以安全地预测。如果您不确定,只需在webbrowser中打开页面,右键单击View Source即可。如果您在客户端ID链中看到像j_id123这样的自动生成ID,那么您需要准确确定该组件的固定ID。
或者,您可以使用#{component.clientId}来将组件的客户端ID打印到生成的HTML输出。您可以使用组件的绑定属性将组件绑定到视图。这样的事情
<h:inputText binding="#{foo}" />
<script>
var $foo = $("[id='#{foo.clientId}']"); // jQuery will then escape ":".
// ...
</script>
这只需要脚本是视图文件的一部分。
作为另一个选择,你可以给出有问题的元素一个类名:
<h:inputText styleClass="foo" />
<script>
var $foo = $(".foo");
// ...
</script>
作为另一个替代方案,您可以将HTML DOM元素本身传递到函数中:
<h:inputText onclick="foo(this)" />
<script>
function foo(element) {
var $element = $(element);
// ...
}
</script>