我正在尝试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。我如何获得这些信息?
答案 0 :(得分:1)
参数myFunction
将采用goog.events.Event
类型。其target
属性包含实际的事件目标,而currentTarget
包含侦听器附加到的对象。
答案 1 :(得分: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)
}