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。谁能告诉我这里可能出了什么问题?

您必须确保您的目标元素在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()方法

最新更新