0

次のような要素に単純なクリックリスナーを追加しようとしています:

$(".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;
            }
        });
        }
    });

しかし、まだクリックリスナーは機能していません。イベントハンドラーを のようなものに置き換えると、そのようなすべてのスパンがページロード時に$(".choice_span").text("foo")テキストをfooに変更するため、GWTquery に問題はないと思います。ここで何が間違っている可能性があるか教えてもらえますか?

4

1 に答える 1

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() メソッドを使用することをお勧めします。

于 2013-01-21T08:47:45.063 に答える