2012-11-11 9 views
8

मैं एक कस्टम जावास्क्रिप्ट ईवेंट बनाने की कोशिश कर रहा हूं। घटना सही ढंग से काम करती है और आग लगती है, लेकिन 'विस्तार' ऑब्जेक्ट जिसे मैं पास कर रहा हूं वह उपलब्ध नहीं है।जावास्क्रिप्ट कस्टमएवेंट विवरण पास नहीं हो रहा है

यहां कोड है जिसे मैं ईवेंट बनाने और प्रेषित करने के लिए उपयोग कर रहा हूं;

var double_tap = new CustomEvent("doubleTap", { 
    detail: { 
     hello: 'world' 
    }, 
    bubbles: true, 
    cancelable: true 
}); 

this.dispatchEvent(double_tap); 

तब मैं शरीर में एक ईवेंट श्रोता जोड़ने के लिए jquery का उपयोग कर रहा हूं;

$('body').on('doubleTap', function(e) { 
    console.log(e); 
}); 

यह आग करता है, और कंसोल लॉग होता है, लेकिन दुर्भाग्य से लॉग केवल बुलबुले और रद्द करने योग्य गुण सहित घटना का विवरण, लेकिन कभी नहीं 'विस्तार' ऑब्जेक्ट आउटपुट, ताकि जानकारी सुलभ नहीं है।

उदाहरण के तौर पर एक jsbin है, मैं शरीर के क्लिक ईवेंट पर ईवेंट बना रहा हूं ताकि आप कंसोल देख सकें; http://jsbin.com/looseroots/6

जब ईवेंट निकाल दिया जाता है तो मैं 'विस्तार' ऑब्जेक्ट से डेटा प्राप्त करने में सक्षम होना चाहता हूं। मैं क्या गलत कर रहा हूं? मैं Chrome में इस परीक्षण किया है, और iOS

पर सफारी

उत्तर

8

आप विवरण

console.log(e.originalEvent.detail); 
+0

इतना आसान, अभी तक कोई भी दस्तावेज जिसे मैं कस्टमइवेंट विधि समझाता हूं, उसे इंगित करता है। धन्यवाद! – Joel

+1

यह वास्तव में एक कस्टमवेन्ट मुद्दा नहीं है, मेरा मानना ​​है कि jQuery ने अपने स्वयं के ईवेंट ऑब्जेक्ट में एक डोम इवेंट लपेट लिया है .. (मैं कोई jQuery विशेषज्ञ नहीं हूं इसलिए मैं गलत हो सकता हूं) – lostsource

+0

सभी को रखना पसंद करते हैं तो jQuery हैंडलर में डेटा तर्क भी जोड़ सकते हैं jQuery क्षेत्र के भीतर कोड। '$ ('body')। ('डबलटैप', फ़ंक्शन (ई, arg1, arg2)' – charlietfl

1

के लिए originalEvent संपत्ति का उपयोग करने की जरूरत है मैंने पाया निम्नलिखित प्रतिबद्ध: https://github.com/jquery/jquery/commit/a90ff8c8c79bfcc32afd340a12f016f20a31d8b6

इस सुधार में jQuery के compat शाखा में है और jQuery 3.0 के रूप में तय किया जाना चाहिए।

4
obj.addEventListener("eventName", function(e) { 
console.log(e.your_property) 
}) 

var event = new CustomEvent("eventName"); 
event.your_property = { key: "value" }; 

obj.dispatchEvent(event); 

जब आप प्रेषित करते हैं तो आप अपने कस्टमएवेंट में गुण बना सकते हैं।

+0

धन्यवाद !, मैं इस मुद्दे से निपटने में 3 बजे बर्बाद हो गया! – Hosar

+0

यह है सोना! :-) – Mac