Wicket:如何将点击事件处理程序添加到 table 行?
Wicket: How to add a click event handler to a table row?
我想让 table 中的每一行响应鼠标点击。具体来说,我希望它转到 link URL。目前我的table是这样定义的
<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>
如您所见,我有一个包含 link.
的 <td>
元素
但如果用户单击 table 行的任何部分,我希望跟随 link。
根据 this SO 问题,可以为 table 行定义 Java 脚本点击处理函数。
所以我在我的 Java 代码中添加了这样的点击处理程序
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(OnLoadHeaderItem.forScript("$('tr').click( function() { window.location = $(this).find('a').attr('href');})"));
}
但是从未调用过处理函数。这行得通吗,还是我需要考虑其他方法?
我的方法是使 <tr>
成为一个 wicket 组件,例如 WebMarkupContainer
并为 click
事件附加一个 AjaxEventBehavior
,然后转到与 <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;
}
我想让 table 中的每一行响应鼠标点击。具体来说,我希望它转到 link URL。目前我的table是这样定义的
<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>
如您所见,我有一个包含 link.
的<td>
元素
但如果用户单击 table 行的任何部分,我希望跟随 link。
根据 this SO 问题,可以为 table 行定义 Java 脚本点击处理函数。
所以我在我的 Java 代码中添加了这样的点击处理程序
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(OnLoadHeaderItem.forScript("$('tr').click( function() { window.location = $(this).find('a').attr('href');})"));
}
但是从未调用过处理函数。这行得通吗,还是我需要考虑其他方法?
我的方法是使 <tr>
成为一个 wicket 组件,例如 WebMarkupContainer
并为 click
事件附加一个 AjaxEventBehavior
,然后转到与 <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;
}