我有一个HTML文档。在该文档中,有一个带ID的元素(如button,div,a)。我知道我可以使用:
Document.get().getElementById("id");
在HTML文件中查找所需元素。如何为其添加Click处理程序? ClickHandlers似乎只在Button类上可用。
由于
答案 0 :(得分:17)
如果您尝试将ClickHandler
添加到<button>
,则可以使用Button.wrap()
执行此操作。
对于<a>
你可以使用Anchor.wrap()
(Anchor
只有ClickListener
s,而不是ClickHandler
s ...还有
对于<div>
,您可以使用Label.wrap()
(Label
只是<div>
s。)
答案 1 :(得分:4)
建议: 尝试学习如何使用UiBinder(在GWT 2.0中添加)。
在你的情况下,你可以做到:
<强> yourView.ui.xml 强>
...
<g:Button ui:field="btnName" />
...
<强> yourView.java 强>
public class yourView extends Composite {
interface MyUiBinder extends UiBinder<LayoutPanel, yourView> {}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
@UiField Button btnName;
public yourView() {
initWidget(uiBinder.createAndBindUi(this));
}
@UiHandler("btnName")
void handleClick(ClickEvent e) {
//Do whatever
}
}
使用“@UiHandler”,您可以添加小部件可以支持的任何处理程序(实现Has **** Handler)。将其他元素添加到该结构很容易且快速,您可以添加任何类型的处理程序。 @UiField创建一个变量,其中包含可在类中任何位置操作的元素实例。
答案 2 :(得分:1)
另一个建议 - 使用GQuery。它可以很容易地将一个简单的事件监听器附加到DOM,而无需创建GWT小部件经常执行的额外元素:
$("id").click(new Function() {
public boolean f(Event e) {
Window.alert("This is GWT code without widget baggage!");
return true;
}
});
请点击此处了解详情:http://code.google.com/p/gwtquery/wiki/GettingStarted#Add_an_event_handler
遗憾的是,没有更多基于GWT代码的渐进增强功能。恕我直言,CSS / HTML在设计/标记方面做得很好 - 它只是我想要替换的Javascript。
答案 3 :(得分:0)
只需设置一个事件监听器即可。
Event.sinkEvents(e, Event.ONCLICK);
Event.setEventListener(e, new EventListener() {
@Override
public void onBrowserEvent(Event event) {
Window.alert("Clicked!");
}
});