2011-01-05 158 views
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被點擊。我如何獲得這些信息?

回答

1

參數myFunction需要的類型爲goog.events.Event。其target屬性包含實際的事件目標,而currentTarget包含偵聽器所連接的對象。

+0

嗨nullptr, currentTarget正是我所期待的!謝謝! (我想投你的答案,但我沒有足夠的聲望,對不起。) – 2011-01-06 14:46:00

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) 

} 
相關問題