GWTquery事件侦听器无法正常工作

时间:2013-01-20 15:46:53

标签: java gwt gwtquery

我正在尝试向这样的元素添加一个简单的单击侦听器:

$(".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 。谁能告诉我这里可能有什么问题?

1 个答案:

答案 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()方法。