2016-08-24 2 views
0

Я создал несколько экземпляров объекта. Одна функция в объекте создает элемент li и использует addEventListener("click", this, false). , когда запускается обработчик событий, он может отображать переменные экземпляра объектов и т. Д., Так что в основном я знаю, что он обращается к соответствующему экземпляру объекта и запускает обработчик событий.Найти объект из элемента dom в событии

Итак, есть способ отследить от элемента dom до экземпляра объекта, который его создал. В этом случае 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

Не понимаю. Какой еще элемент? –

+0

Я бы подумал, что это сработает. var el = document.getElementById ('myElement'), затем узнайте, какой экземпляр объекта создал его. var mainObject = el.myObjectHandler(), тогда я мог бы вызвать mainObject.name и получить тот же результат, как если бы он был нажат. – pacific707

Смежные вопросы