2016-08-24 4 views
0

オブジェクトのインスタンスをいくつか作成しました。オブジェクトの1つの関数は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

私は分かりません。他の要素は? –

+0

私はそれがこのように動作すると思います。 var el = document.getElementById( 'myElement')次に、作成したオブジェクトインスタンスを確認します。 var mainObject = el.myObjectHandler()次に、mainObject.nameを呼び出して、クリックしたときと同じ結果を得ることができます。 – pacific707

関連する問題