2

我有以下 java 和 html 代码:

this.leakageModel = new PropertyListView<Leakage> ( "leakage", new ArrayList<Leakage> ()) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem (final ListItem<Leakage> item) {

            Link<String> brandLink = new Link<String> ("brandLink") {
                private static final long serialVersionUID = -480222850475280108L;

                @Override
                public void onClick () {
                    //change another model in the page to update 
                    //another table when the link is clicked
                }

            };

            brandLink.add (new Label ("brand"));
            item.add (brandLink);

        } };

    add (this.leakageModel);

.html 文件:

                        <tr wicket:id="leakage" class="testClass">
                            <td class="testClass">
                                <a wicket:id="brandLink" href="#">
                                    <span wicket:id="brand"></span>
                                </a>
                            </td>   

                        </tr>

我想要做的是能够从 onClick() 方法内部调用一个javascript函数。

我目前在 onClick 方法中执行的模型更新效果很好,并更新了页面上的另一个表。

但是,我尝试调用 javascript 函数或更改 css 样式的所有操作都失败了。

例如:

添加一个css类:

add (new AttributeAppender("class", new Model("anotherclass"), ""));

改用 AjaxLink 类型,以及我尝试过的许多其他事情都无济于事。

在相关说明中,我的初衷是隐藏表格中的所有行,除了我单击的行。也许我可以只从 Java 代码中做到这一点,根本不需要 Javascript,但是像上面那样更新 css 是行不通的。

关于我做错了什么的任何建议?

4

1 回答 1

3

在相关说明中,我的初衷是隐藏表格中的所有行,除了我单击的行。

我不会回答您的问题,而是尝试为您的问题提供解决方案:)。

通过 javascript 隐藏表格行非常有意义。我建议使用 Jquery 执行此操作,如Hiding all but first table row with jQuery中所述:

$("#myTbl tr:not(nth-child(3))").hide();

现在,每次用户点击您的 Wicket 链接时,您都必须执行上述 javascript 片段。为此,您可以例如创建自己的链接类,如下所示:

public class JavascriptLink extends Label{

  public JavascriptLink(String id, String label) {
    super(id, label);
    add(new AttributeAppender("onclick", "...your javascript here..."));
  }
}

我留给您将 jquery 与 JavascriptLink 结合起来以满足您的要求。它应该朝着这个方向努力。

于 2013-07-07T21:04:18.093 回答