0

我正在试验goog.events.listen(src, type, listener, opt_capt, opt_handler). 有时我有多个来源,但总是在发生此事件时调用相同的事件类型和函数(侦听器)。

我应该为每个来源简单地输入一次,还是有更好的方法?

因为我喜欢在创建侦听器的对象中处理这个问题,所以我设置了opt_handler = this. 我认为在我的应用程序中不可能同时调用两个具有侦听器的事件,所以我让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

问候,

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

参数myFunctiontake 将是 type goog.events.Event。它的target属性包含实际的事件目标,同时currentTarget包含侦听器附加到的对象。

于 2011-01-05T17:15:31.077 回答