2012-01-30 10 views
9

क्या मैन्युअल रूप से बनाए गए जावास्क्रिप्ट ईवेंट में कस्टम डेटा पास करने के लिए कोई जावास्क्रिप्ट तरीका है?कस्टम संलग्न डेटा के साथ जावास्क्रिप्ट इवेंट निर्माण

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

यह ठीक काम करता है और इस कोड का उपयोग करके नियंत्रित किया जा सकता:

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

लेकिन, मुझे जरूरत

ठीक है, चलो कहते हैं कि मैं बना सकते हैं और एक JavaScript घटना को गति प्रदान करने के लिए इस कोड को मिला देना घटना में अतिरिक्त डेटा पास करने का एक तरीका, ताकि mySubmitEventHandler जानता है कि ईवेंट को उपयोगकर्ता द्वारा या ऊपर दिखाए गए जावास्क्रिप्ट ईवेंट निर्माण द्वारा निकाल दिया गया था या नहीं। एक बुलियन मूल्य पर्याप्त होगा।

तो, मैं नव निर्मित evObj पर "myEvent = true" जैसे कुछ कैसे जोड़ सकता हूं?

और कृपया कोई jQuery उत्तर नहीं है, मुझे इसे शुद्ध जावास्क्रिप्ट में करने की आवश्यकता है।

उत्तर

15

evObj पैरामीटर संलग्न करें।

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

इस कोड को दर्शाता है कि घटना dispatchEvent द्वारा पारित वस्तु घटना श्रोता में एक (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

इतना आसान है कि यह दर्द होता है! बहुत बहुत धन्यवाद :) – Alp

+0

बहुत ही अभिनव चाल! धन्यवाद :) –

3

आपका evObj यह एक सामान्य वस्तु है जिसे आप किसी भी डेटा को evObj.myData = "blablabla" जैसी वस्तु के रूप में जोड़ सकते हैं; और फिर

आशा श्रोता में डेटा को पढ़ने में मदद करता है इस

+0

इसी प्रकार के जवाब लेकिन +1 के बाद से यह एक मिनट पहले पोस्ट किया गया उपर्युक्त उत्तर से! –

संबंधित मुद्दे