我正在尝试向这样的元素添加一个简单的单击侦听器:
$(".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 。谁能告诉我这里可能有什么问题?
答案 0 :(得分:2)
您必须确保您定位的元素位于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()方法。