2016-08-24 38 views
0

我創建了一個對象的一些實例。對象中的一個功能創建一個li元素並使用addEventListener("click", this, false)。 當事件處理程序運行時,它可以顯示對象實例變量等,所以基本上我知道它訪問對象的正確實例並運行事件處理程序。在事件中從DOM元素查找對象

所以有一種方法可以從dom元素追溯到創建它的對象的實例。在這種情況下,this是提供鏈接的內容。

我想要做的是通過選擇器或ID獲取元素。然後以某種方式獲取對象的實例。找出元素的this(不是指dom元素爲this)我在想一個解決方法是創建一個自定義事件並在處理函數中返回對象本身。然後獲取元素並像myElement.click()那樣運行它。

有沒有更好的方法來做到這一點?

+0

請加[MCVE],因爲它很難當討論到理解的代碼散文。 – zzzzBov

回答

0

這裏是基本的味道,利用this

const obj = { 
    name: "my object", 
    listen() { 
    someElement.addEventListener('click', this.listener.bind(this)); 
    }; 
    listener(event) { 
    console.log("The event and this name are", event, this.name); 
    } 
}; 

您也可以使用handleEvent方法:

const obj = { 
    name: "my object", 
    handleEvent() { console.log("I was clicked!", this.name); }, 
    listen() { 
    someElement.addEventListener('click', this); 
    } 
}; 
+0

的確如此,但我需要從另一個元素的上下文中獲取對象實例。 – pacific707

+0

我不明白。還有什麼元素? – 2016-08-24 03:31:06

+0

我認爲它會這樣工作。 var el = document.getElementById('myElement')然後找出什麼對象實例創建它。 var mainObject = el.myObjectHandler()然後我可以調用mainObject.name並獲得與點擊相同的結果。 – pacific707