2012-01-30 7 views
9

手動で作成したJavaScriptイベントにカスタムデータを渡すJavaScript方法はありますか?カスタムアタッチされたデータを使用したJavaScriptイベントの作成

[OK]を、のは、私はJavaScriptのイベントを作成し、トリガするこのコードを得たとしましょう:

var evObj = document.createEvent('HTMLEvents'); 
evObj.initEvent('submit', bubbling, cancelable); 
anElement.dispatchEvent(evObj); 

これは正常に動作し、このコードを使用して処理することができます。

document.addEventListener('submit', mySubmitEventHandler, true); 

しかし、私が必要追加のデータをイベントに渡す方法。mySubmitEventHandlerは、ユーザーがイベントを発生させたのか、または上に示したようにJavaScriptイベントを作成したのかを知るようにします。ブール値で十分です。

したがって、新しく作成したevObjに「myEvent = true」のようなものを追加するにはどうすればよいですか?

jQueryの回答はしないでください。純粋なJavaScriptでこれを行う必要があります。

答えて

15

evObjにパラメータをアタッチできます

ホープ・リスナーにデータを読み込みます。

evObj.flag = 'Hi!'; 
anElement.dispatchEvent(evObj); 

このコードはdispatchEventによって渡されたイベントオブジェクトは、イベントリスナーの1(Live demo)に等しいことを示しています。これは分以前に投稿されましたので、

var evObj = document.createEvent('HTMLEvents'); 
document.body.addEventListener('test', function(e){ alert(e === evObj); },true); 
evObj.initEvent('test', true, true); 
document.body.dispatchEvent(evObj); // Shows alert, "true" 
+2

だから簡単に痛い!ありがとうalot :) – Alp

+0

非常に革新的なトリック!ありがとう:) –

3

あなたのevObjは通常のオブジェクトです。あなたはevObj.myData = "blablabla"のようなオブジェクトのプロパティとしてデータを追加できます。その後、これは

+0

同様の答えが、1上記の答えよりも! –

関連する問題