我想让表格中的每一行都响应鼠标点击。具体来说,我希望它转到链接URL。目前我的表定义如下
<ul wicket:id="componentStatus" class="component-status">
<li wicket:id="equipComponentInst">
<table class="full-width">
<tr>
<td><div wicket:id="<XXX>ComponentPanel"></div></td>
<td><a wicket:id="<XXX>DetailLink" class="pull-right"><img wicket:id="detailLinkImg" border="0px"/></a></td>
</tr>
</table>
</li>
</ul>
如您所见,我有一个包含链接的<td>
元素。
但是如果用户点击表格行的任何部分,我希望关注该链接。
根据this SO问题,可以为表行定义Javascript单击处理函数。
所以我在我的Java代码中添加了这样的点击处理程序
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(OnLoadHeaderItem.forScript("$('tr').click( function() { window.location = $(this).find('a').attr('href');})"));
}
但处理程序函数永远不会被调用。这可以,或者我需要看一个不同的方法吗?
答案 0 :(得分:2)
我的方法是将<tr>
wicket组件设为例如WebMarkupContainer
,并为AjaxEventBehavior
事件附加click
,并且相同目的地<XXX>DetailLink
指向你。
示例:
private WebMarkupContainer tr() {
WebMarkupContainer wmc = new WebMarkupContainer("tr");
wmc.add(new AjaxEventBehavior("click") {
@Override
protected void onEvent(AjaxRequestTarget target) {
//go to the same place as the XXXDetailLink
}
});
return wmc;
}