参见英文答案 >
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>