0

私は実験していgoog.events.listen(src, type, listener, opt_capt, opt_handler)ます。時々私は複数のソースを持っていますが、このイベントが発生したときに呼び出されるべきイベントタイプと関数は常に同じです(リスナー)。

ソースごとに1回だけ入力する必要がありますか、それともより良い方法がありますか?

リスナーを作成しているオブジェクト内でこれを処理するのが好きなので、を設定しopt_handler = thisます。私のアプリケーションでは、リスナーを持つ2つのイベントが同時に呼び出されることはあり得ないと思うので、を許可しopt_capt = falseます。

私のJavaScriptファイルでは次のようになります:

var htmlElement = goog.dom.getElement(el[0]);
goog.events.listen(htmlElement, goog.events.EventType.CLICK, this.myFunction, false, this);

myFunction引数としてイベントのみを取得するようになりました。しかし、どのhtmlElementがクリックされたか知りたいのですが。この情報を取得するにはどうすればよいですか?

4

2 に答える 2

1

変数eを介してイベントを常に使用し、クリックした要素であるターゲットを取得できる必要があります。ただし、this.myFunction(e)をgoog.events.listenに入れないでください。goog.event.myFunctionは問題なく、最初から実行しました。後で、追加のパラメーターをmyFunctionに渡したい場合(そしておそらくカリー化を行いたい場合)、goog.bind例を見て、またチェックアウトしてくださいgoog.partial

ご挨拶、

1月

goog.events.listen(
    htmlElement,
    goog.events.EventType.CLICK,
    this.myFunction,
    false,
    this
);

//alternative
goog.events.listen(
    htmlElement,
    goog.events.EventType.CLICK,
    goog.bind(myFunction, this)
);



myfunction = function(e) {
    //maybe this
    window.console.log(e.target)

    //or this
    var event = e.getBrowserEvent()
    window.console.log(event.target)

}
于 2011-06-08T23:54:19.153 に答える
1

引数myFunctionを取るはタイプになりgoog.events.Eventます。そのtargetプロパティには実際のイベントターゲットがcurrentTarget含まれ、リスナーがアタッチされたオブジェクトが含まれます。

于 2011-01-05T17:15:31.077 に答える