我们正在使用 wicket LinkTree。在页面上构建并呈现树后,我们可以在应用程序中动态地将新节点添加到树中。添加新节点时,我们希望用不同的颜色(比如红色)显示新添加的节点。
我们采取的一种方法(但没有奏效)如下。我们扩展 LinkTree 类并重写 newNodeComponent 方法,如下所示。
@Override
protected Component newNodeComponent(String id, IModel<Object> model) {
return new LinkIconPanel(id, model, TalepTreeForTTBina.this) {
private static final long serialVersionUID = 4518741854057038753L;
@Override
protected void onNodeLinkClicked(Object node, BaseTree tree, AjaxRequestTarget target)
{ . . . . . .
然后我们向这个 LinkIconPanel 事物添加一个 html 属性(类)。之后,我们的计划是编写一个 jquery 函数来查看树上的那个类,然后更改显示文本的 <td>(或者实际上是 <span>)标签的颜色。但是,我们得到的最终标记类似于以下内容:
< td class="myClass" . . . .>
< wicket:panel ....>
< table . . . >
< tbody . . . >
< tr . . . >
< td . . . >
< a ...>
< span > my text that I want to change the color < /span >
我可以访问最外层的 td 标记(在上面的顶部),但无法访问我的 Java Wicket 代码中的内部标记。所以我只是将 myClass 从检票口代码插入到最外层的 td 标记中,并希望从客户端的 jquery 端处理颜色。看起来(从我的 css 代码)我无法从 jquery(或 css)访问 <table> 标签,因为两者之间有一个 <wicket:panel> 标签。
所以我的问题是: 1. 有没有更好的方法来改变 LinkTree 节点的颜色?2.如果这是我应该走的路,我怎样才能从css到达那个<span>标签?我不能使用 RenderBodyOnly(true) 因为我没有在我的代码中手动添加树节点并且我无法访问节点(要作为节点添加的项目)。LinkTree 为我做到了。
我会很感激任何帮助。谢谢。