0

我可能会错误地说明这一点,但是一旦内容(动态)加载到外部.jsp,是否有任何方法可以操作(使用 JavaScript)提示中的内容?

我有一个正在显示的项目列表,我想将其中的一些加粗。在渲染之前,我无法将 ID 或类单独添加到列表中的任何这些项目中。它基本上是一个数据转储

仅供参考,我们使用 JSF 来拉取 .jsp 上的项目,这些项目在 HTML 中呈现为表格:

<h:panelGrid columns="1">
    <h:column>
        <h:selectManyCheckbox layout="pageDirection" value="#{advancedtoolscontroller.roleItems}">
            <f:selectItems value="#{advancedtoolscontroller.roleList}" />
        </h:selectManyCheckbox>
    </h:column>
</h:panelGrid>  

任何帮助是极大的赞赏...

4

1 回答 1

0

您需要为h:selectManyCheckbox和任何父UINamingContainer组件(例如h:formh:dataTable等)分配一个唯一ID。这样 JSF 将相应地生成客户端 ID,否则它将自动生成无法在 JS 中使用的不可预测的客户端 ID。要了解它们是如何生成的,只需在 webbrowser 中右键单击页面并选择View Source

然而,有一个小警告,JSF 使用冒号:作为UINamingContainer分隔符,例如formid:checkboxid. 冒号是 CSS 中的非法字符。无论如何,要在 CSS/jQuery 中选择它们,您需要使用反斜杠转义它们。例如formid\:checkboxid

此外,在h:dataTable数据表 ID 之后会在客户端 ID 后附加一个标识符,即行索引,例如formid:datatableid:0:checkboxid. 但是当您看到生成的 HTML 输出中的模式时,这应该看起来很明显。

h:selectManyCheckbox轮流为每个复选框分配一个唯一的客户端 ID 和相同的客户端名称。同样,只需检查生成的 HTML 输出即可查看模式。

在 jQuery 中,您还可以使用jQuery.filter()基于客户端 ID/名称的最后一部分过滤掉感兴趣的复选框。

于 2010-01-07T20:21:58.047 回答