我有以下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不起作用。
关于我做错了什么的任何建议?
答案 0 :(得分:3)
在相关的说明中,我的初衷是隐藏所有行 除了我点击过的那张桌子。
我会尝试为您的问题提供解决方案,而不是回答您的问题。)。
通过javascript隐藏表格行非常有意义。我建议按照Hiding all but first table row with jQuery:
中的描述使用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结合使用以满足您的要求。它应该朝着这个方向发展。