我想添加一个简单的点击监听器到一个元素,像这样:
$(".choice_span").bind(Event.ONMOUSEUP, new Function() {
public boolean f(Event E) {
Window.alert("foo");
return true;
}
});
但是当我点击时,什么也没有发生(所有的导入都很好,没有问题)。所以我认为我应该等待所有元素加载完毕。所以我改成:
Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand () {
public void execute () {
$(".choice_span").bind(Event.ONMOUSEUP, new Function() {
public boolean f(Event E) {
Window.alert("foo");
return true;
}
});
}
});
但是点击监听器仍然不工作。我认为GWTquery没有问题,因为如果我用$(".choice_span").text("foo")
之类的东西替换事件处理程序,所有这些跨度都会在页面加载时将其文本更改为foo。谁能告诉我这里可能出了什么问题?
您必须确保您的目标元素在dom中。如果您正在使用一个小部件,您可以将小部件作为查询的上下文传递
$(".choice_span", myWidget).bind(...)
或在附加小部件时执行查询:
myWidget.addAttachHandler(new Handler() {
@Override
public void onAttachOrDetach(AttachEvent event) {
if (event.isAttached()) {
$(".choice_span").bind(Event.ONMOUSEUP, ...);
} else {
$(".choice_span").bind(Event.ONMOUSEUP);
}
}
});
如果你想监听点击,我建议你使用click()方法